A conectividade com a Internet através da minha caixa de 12.04 LTS shorewall é irregular na melhor das hipóteses. O Ping funciona localmente e na Internet sem pacotes descartados (tanto da própria caixa quanto da LAN interna). As conexões HTTP funcionam muito bem com o squid, mas quando não uso o squid, elas são lentas e irregulares. O SSH também é lento e algumas vezes a conexão pode ser difícil. HTTPS e email não funcionam de todo.
Esta caixa está substituindo uma caixa 11.04 com a mesma configuração que funcionou bem. É uma nova instalação do 12.04 LTS em um novo hardware.
Configuração de rede:
% 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)
Eu não acho que seja um problema de roteamento:
% 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
Eu habilitei o encaminhamento de IP:
% sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Eu testei o rp_filter com os mesmos resultados.
Eu tentei adicionar especificamente uma regra ao shorewall para permitir o tráfego nas versões 80 e 443, mas ela não foi corrigida (e não deve ser necessária com a política fornecida).
A configuração do Shorewall é a seguinte:
% 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 relevantes:
% 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
Tudo parece bem aos meus olhos.
Eu acho que é um problema de rastreamento de conexão, mas não sei como diagnosticar isso, muito menos corrigi-lo. Qualquer ajuda é muito apreciada.