У меня дома стоит роутер Linux - настольный компьютер с несколькими сетевыми картами и картой Wi-Fi. Это отлично работает в течение нескольких лет. Однако недавно я добавил новый интерфейс (eth2) и не могу получить доступ к хостам в этой сети из других внутренних сетей.
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 является вторым портом на плате с двумя никель-кадрами (Intel 82546GB). eth1 - первый порт на этой карте. eth0 - встроенный ник на материнской плате. wlan0 - это Wi-Fi-карта Atheros AR5418.
У меня есть простая настройка брандмауэра на данный момент для устранения проблемы, с которой я столкнулся. Вот скрипт брандмауэра:
#!/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
Таблица маршрутизации маршрутизатора:
# 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
Все работает нормально, за исключением того, что я не могу устанавливать соединения с хостов в сетях 172.16.0.0/24 или 172.16.16.0/24 в сети 172.16.48.0/24 на новом интерфейсе.
Я могу подключиться с маршрутизатора к хостам в сети 172.16.48.0 и с этих хостов в Интернет. Я также могу подключиться между хостами в сети 172.16.0.0 и Wi-Fi 172.16.16.0.
Если я запускаю tcpdump на хосте 172.16.48.100 и пытаюсь подключиться к нему по ssh с 172.16.0.204, я вижу входящие, но не возвращающиеся пакеты.
Конфигурация сети на 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
Если я запускаю tcpdump на 172.16.0.204 и пытаюсь выполнить ssh с 172.16.48.100 до 172.16.0.204, я не вижу пакетов.
Что я делаю неправильно?