У меня дома стоит роутер 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, я не вижу пакетов.

Что я делаю неправильно?

1 ответ1

0

У вас есть правило iptables

   /sbin/iptables -A droplog -s 0/0 -d 0/0 -j DROP

но у вас нет следующего правила:

   /sbin/iptables -A INPUT -i $NEW_INTERFACE -j ACCEPT

Следовательно, исходный пакет, предназначенный для $ NEW_INTERFACE, отбрасывается, и соединение никогда не становится ESTABLISHED, RELATED.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .