Настройте поведение фильтрации NAT с помощью iptables

Настройте поведение фильтрации NAT с помощью iptables

Я использую это правило для настройки 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

Что делают эти правила?

  1. -A POSTROUTING -o eth1 -j MASQUERADEскрывает ваши внутренние IP-адреса, когда пакеты покидают вашу сеть
  2. -P FORWARD -j DROPустанавливает политику по умолчанию для вашей цепочки FORWARD на DROP
  3. -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPTпозволяет новым и установленным переадресованным соединениям
  4. -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

Связанный контент