
Я использую это правило для настройки SNAT:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000
Я хочу указать правило для фильтрации пакетов, не предназначенных для внутреннего адреса и порта, которые инициировали сеанс. Кроме того, для получения пакетов с определенной внешней конечной точки необходимо, чтобы внутренняя конечная точка сначала отправляла пакеты на IP-адрес этой определенной внешней конечной точки. (Фильтрация, зависящая от адреса NAT)
Пример:
Машина с внутренним IP и портом (X:x), которая находится за NAT, открывает соединение с сервером с IP Y. Поэтому с помощью правила я должен иметь возможность разрешить только соединение, исходящее с IP-адреса Y и направленное на (X:x). Все остальные соединения будут сброшены.
решение1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
Что делают эти правила?
-A POSTROUTING -o eth1 -j MASQUERADE
скрывает ваши внутренние IP-адреса, когда пакеты покидают вашу сеть-P FORWARD -j DROP
устанавливает политику по умолчанию для вашей цепочки FORWARD на DROP-A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
позволяет новым и установленным переадресованным соединениям-A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
разрешает только установленные ПЕРЕНАПРАВЛЕННЫЕ соединения в
Приведенные выше правила предполагают, что вы используете это устройство в качестве шлюза/брандмауэра, eth1
подключенного к вашей WAN и eth0
подключенного к вашей LAN.
Дополнительное чтение:Постмаршрутизация и IP-маскировка
РЕДАКТИРОВАТЬ
Чтобы настроить «условную» переадресацию портов:
По порту источника
iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT
По IP-адресу источника
iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT