У меня есть хост, который выступает в качестве шлюза для маршрутизации домашней сети в Интернет. IP Masquerading был включен в течение нескольких месяцев, и система работала нормально.
Как я могу настроить его для работы также в качестве брандмауэра? Любые условия, которые я ставлю на трафик в цепочке FORWARD
просто не работают.
Например
-A FORWARD -i eth1 -p tcp -j ACCEPT
Просто отбрасывает весь TCP-трафик из маршрутизации, вместо того, чтобы просто ограничить его трафиком из eth1. Также...
-A FORWARD -s 192.168.2.0/24 -p tcp -j ACCEPT
... не только разрешает трафик TCP из подсети 192.168.2.0, в тот момент, когда я применяю правило, весь трафик TCP прекращает маршрутизацию.
Мне не удалось найти какой-либо четкой документации по разбивке пакетов с помощью маскарада или о том, как отказаться от маскарада и использовать вместо этого SNAT.
eth0
- внешний интерфейс в той же подсети, что и DSL-маршрутизаторeth1
- внутренний интерфейс, все мои хосты работают нормально по DHCP
Как настроить iptables для маскировки IP-адресов и межсетевого экрана?
# Generated by iptables-save v1.4.21 on Thu Oct 29 12:48:19 2015
*nat
:PREROUTING ACCEPT [10859:2328892]
:INPUT ACCEPT [1002:126271]
:OUTPUT ACCEPT [1256:91484]
:POSTROUTING ACCEPT [638:43890]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Oct 29 12:48:19 2015
# Generated by iptables-save v1.4.21 on Thu Oct 29 12:48:19 2015
*filter
:INPUT ACCEPT [5:803]
:FORWARD ACCEPT [127:18532]
:OUTPUT ACCEPT [5:431]
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "HTTP Serve eth1"
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "SSH Serve eth1"
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "ssh on eth1"
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j DROP -m comment --comment "drop dns from eth0"
-A INPUT -p icmp -j ACCEPT
-A INPUT -i eth0 -j DROP
-A INPUT -i eth1 -j REJECT
-P INPUT DROP
-A FORWARD -p tcp -j ACCEPT -m comment --comment "all tcp from internal"
-A FORWARD -p udp -j ACCEPT -m comment --comment "all udp from internal"
-A FORWARD -p icmp -j ACCEPT
-P FORWARD DROP
-A OUTPUT -o eth1 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-P OUTPUT DROP
COMMIT
# Completed on Thu Oct 29 12:48:19 2015