Вы, кажется, пропускаете маскарад в таблице POSTROUTING маршрутизаторов!
Это очень упрощенная версия моих собственных правил пересылки на моем ASUS EEEPC, действующем в качестве маршрутизатора для моих проводных и беспроводных сетей. Я не буду гарантировать, что это будет работать, потому что я отредактировал это здесь, но я надеюсь, что это поможет. Идеальный набор правил - очень сложная и индивидуальная вещь! Мой iptables содержит около 25000 переменных правил, главным образом для предотвращения спама на порту 25 из нежелательных стран в пиковые периоды.
Есть еще множество правил, которые вы должны добавить, чтобы уменьшить трафик только до того, что необходимо. Также блокируйте исходящий трафик, такой как широковещательные рассылки, dhcp, mDNS и т.д. MDNS через порт 5353 является серьезным нарушителем. Запуск tcpdump во внутренней сети интернет-провайдера заставляет задуматься, как на любом реальном трафике есть место для перемещения!
Я добавил правило, чтобы остановить раздражающие атаки ssh brute тоже ... :-)
Добавьте правило для своего домашнего IP-адреса, чтобы переопределить все остальные в случае, если вы провалили ветку, на которой сидите, но при внесении изменений лучше попробовать временный тест и вернуться к рабочему конфигу через 5 секунд, например:
# ./testfirewall.sh; sleep 10;./firewall.sh
О роутере
#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP
# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP
# dnat
$IPT -t nat -A PREROUTING -i $EXTIF -p tcp -d $EXTADDR --sport $HI_PORTS --dport 80 -j DNAT --to-destination $NODEADDR:80
# forward only established connections
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# antispoof
$IPT -t filter -A FORWARD -i $EXTIF -s $EXTADDR -j DROP
$IPT -t filter -A FORWARD -i $EXTIF -s 127.0.0.1 -j DROP
# forward new connections to node1 on port 80
$IPT -t filter -A FORWARD -i $EXTIF -o $INTIF -p tcp -d $NODEADDR -m state --state NEW --sport $HI_PORTS --dport 80 -j ACCEPT
# forward all outgoing connections from node1 (need more rules to prevent broadcasts/leakage/bogons/igmp/some icmps etc in and out)
$IPT -t filter -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# this appeared to be missing
$IPT -t nat -A POSTROUTING -o $EXTIF -s $NODEADDR -d 0/0 -j MASQUERADE
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT
#need to add this if you are sending mail
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset
На узле входы уже должны быть чистыми:
#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP
# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP
$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 80 -j ACCEPT
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT
конец