Eu tenho um roteador Linux em casa, que é uma máquina desktop com várias nics e uma placa wifi. Isso tem funcionado muito bem por alguns anos agora. No entanto, adicionei recentemente uma nova interface (eth2) e não consigo acessar hosts dessa rede de outras redes internas.
eth0 - External interface to ISP
eth1 - Internal interface (172.16.0.1) Bcast:172.16.0.255 Mask:255.255.255.0
eth2 - The new network (172.16.48.1) Bcast:172.16.48.255 Mask:255.255.255.0
wlan0 - Wifi network (172.16.16.1) Bcast:172.16.16.255 Mask:255.255.255.0
eth2 é a segunda porta em um cartão dual nic (Intel 82546GB). eth1 é a primeira porta desse cartão. eth0 é o nic embutido na placa-mãe. wlan0 é uma placa wifi Atheros AR5418.
Eu tenho uma configuração de firewall simples por enquanto para solucionar o problema que estou tendo. Aqui está o script de firewall:
#!/bin/bash
MYIP_EXT="myhomeip"
MYIP_INT="172.16.0.1"
EXT_INTERFACE="eth0"
INT_INTERFACE="eth1"
NEW_INTERFACE="eth2"
WIFI_INTERFACE="wlan0"
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t mangle -F
/sbin/iptables -t nat -F
/sbin/iptables -N droplog
/sbin/iptables -A droplog -s 0/0 -d 0/0 -j LOG --log-prefix "droplog "
/sbin/iptables -A droplog -s 0/0 -d 0/0 -j DROP
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -A FORWARD -i $EXT_INTERFACE -o $INT_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i $WIFI_INTERFACE -o $EXT_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i $NEW_INTERFACE -o $EXT_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o $EXT_INTERFACE -j SNAT --to $MYIP_EXT
/sbin/iptables -A PREROUTING -t nat -p tcp --dport 2222 -i $EXT_INTERFACE -j DNAT --to 172.16.0.204:22
/sbin/iptables -A INPUT -i $WIFI_INTERFACE -j ACCEPT
/sbin/iptables -A INPUT -i $INT_INTERFACE -j ACCEPT
/sbin/iptables -A INPUT -i $EXT_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i $EXT_INTERFACE -j droplog
Tabela de roteamento do roteador:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 99.70.232.1 0.0.0.0 UG 0 0 0 eth0
myhomeip.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.16.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
172.16.48.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
Tudo funciona bem, exceto que não consigo fazer conexões de hosts nas redes 172.16.0.0/24 ou 172.16.16.0/24 nas redes 172.16.48.0/24 na nova interface.
Eu posso conectar do roteador aos hosts na rede 172.16.48.0 e desses hosts para a internet. Eu também posso conectar entre hosts na rede 172.16.0.0 e na rede wifi 172.16.16.0.
Se eu executar o tcpdump no host 172.16.48.100 e tentar ssh nele a partir de 172.16.0.204, vejo pacotes chegando, mas não retornando.
A configuração de rede em 172.16.48.100 é
inet addr:172.16.48.100 Bcast:172.16.48.255 Mask:255.255.255.0
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.48.1 0.0.0.0 UG 0 0 0 eth0
172.16.48.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Se eu rodar o tcpdump em 172.16.0.204 e tentar o ssh de 172.16.48.100 para 172.16.0.204, não vejo nenhum pacote.
O que estou fazendo de errado?