Проблемы пересылки IP Shorewall в 12.04 LTS
Подключение к Интернету через мою коробку shorewall 12.04 LTS в лучшем случае нечеткое. Ping работает как локально, так и в Интернете без пропущенных пакетов (как из самой коробки, так и из внутренней локальной сети). HTTP-соединения прекрасно работают через squid, но когда я не использую squid, они медленные и нестабильные. SSH также медленный, и иногда соединение может быть затруднено. HTTPS и электронная почта не работают вообще.
Этот ящик заменяет ящик 11.04 с той же настройкой, которая работала нормально. Это новая установка 12.04 LTS на новом оборудовании.
Конфигурация сети:
% ifconfig
eth0 Link encap:Ethernet HWaddr bc:5f:f4:47:99:24
inet addr:X.X.X.X Bcast:255.255.255.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:576 Metric:1
RX packets:36215 errors:2882 dropped:0 overruns:0 frame:2882
TX packets:6652 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2983691 (2.9 MB) TX bytes:660681 (660.6 KB)
Interrupt:16
eth1 Link encap:Ethernet HWaddr bc:5f:f4:47:99:22
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::be5f:f4ff:fe47:9922/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5875 errors:0 dropped:9 overruns:0 frame:0
TX packets:4424 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:661913 (661.9 KB) TX bytes:762000 (762.0 KB)
Interrupt:16
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1284 (1.2 KB) TX bytes:1284 (1.2 KB)
Я не думаю, что это проблема маршрутизации:
% route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default X.X.X.X 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
X.X.X.0 * 255.255.254.0 U 0 0 0 eth0
Я включил IP-пересылку:
% sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Я пробовал с включенным и выключенным rp_filter с теми же результатами.
Я специально пытался добавить правило в shorewall, чтобы пропускать трафик на 80 и 443, но это не исправило это (и не должно быть необходимо с данной политикой).
Конфигурация Shorewall выглядит следующим образом:
% grep -v ^# /etc/shorewall/interfaces
net eth0 detect dhcp
loc eth1 detect dhcp
% grep -v ^# /etc/shorewall/zones
fw firewall
net ipv4
loc ipv4
% grep -v ^# /etc/shorewall/rules
SECTION NEW
Ping(ACCEPT) fw loc
% grep -v ^# /etc/shorewall/policy
fw fw ACCEPT info
fw net ACCEPT info
fw all REJECT warning
loc fw ACCEPT info
loc net ACCEPT info
net fw REJECT notice
net loc DROP error
all all REJECT info
% grep -v ^# /etc/shorewall/masq
eth0 10.0.0.0/24
Соответствующие iptables:
% sudo iptables -L
...
Chain net2loc (1 references)
target prot opt source destination
dynamic all -- anywhere anywhere ctstate INVALID,NEW
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
Drop all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level error prefix "Shorewall:net2loc:DROP:"
DROP all -- anywhere anywhere
...
% sudo iptables -t nat -L -v -n
...
Chain POSTROUTING (policy ACCEPT 116 packets, 8749 bytes)
pkts bytes target prot opt in out source destination
189 12557 eth0_masq all -- * eth0 0.0.0.0/0 0.0.0.0/0
Chain eth0_masq (1 references)
pkts bytes target prot opt in out source destination
73 3808 MASQUERADE all -- * * 10.0.0.0/24 0.0.0.0/0
Все выглядит хорошо для моих глаз.
Я думаю, что это проблема с отслеживанием соединения, но я не знаю, как ее диагностировать, а тем более исправить. Любая помощь очень ценится.
1 ответ
Вам нужно включить ip forwarding изнутри shorewall
sudo nano /etc/shorewall/shorewall.conf
тогда найди строчку IP_FORWARDING=keep
и измените это на On
:
IP_FORWARDING=On
Сохраните и выйдите из файла, затем запустите:
sudo shorewall restart