IP-таблицы перехватывают исключение

У меня есть набор правил iptable, которые выглядят следующим образом:

-A PREROUTING  --jump intercept-nat
-A intercept-nat --jump DNAT -s 10.10.1.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.10.1.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.1.2.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.1.2.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"

Он предназначен для отправлять трафик 80 и 443 в Squid, прокси-сервер кеширования http. Я хотел бы добавить несколько строк в правила iptables, которые НЕ будут направлять трафик 443 на определенные IP-адреса на 10.10.1.1:3127 (squid)

Пример использования: у меня есть сервер веб-сокета, который необходимо клиентам за прокси-сервером подключиться, но squid не поддерживает веб-сокеты. Поэтому я хочу, чтобы этот трафик обходил squid

1
задан 24 August 2017 в 20:08
3 ответа

Я бы сделал следующее:

-A PREROUTING -s 10.10.1.0/24 ! -d 10.10.1.1/32 --jump intercept-nat
-A PREROUTING -s 10.1.2.0/24 ! -d 10.10.1.1/32 --jump intercept-nat
-A intercept-nat -d target-ip -p tcp -m tcp --dport 443 -j RETURN
-A intercept-nat --jump DNAT -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"

Каждый раз, когда адресат пакета совпадает с target-ip , он пропускает остальные правила intercept-nat. Я также немного изменил ваши правила, чтобы сделать их более читаемыми и легко изменяемыми; -).

1
ответ дан 3 December 2019 в 23:26

Самый простой способ обойти NAT - это ПРИНЯТЬ пакет, который завершит путь в таблице (PREROUTING), а также в цепочке (intercept-nat). RETURN выйдет из цепочки (intercept-nat) и продолжится через таблицу (PREROUTING).

iptables -t nat -A PREROUTING <some criterium> -j ACCEPT

или

iptables -t nat -A intercept-nat <some criterium> -j ACCEPT

Несмотря на то, что я написал -A , вы должны поместить эту строку перед действием NAT, или вставьте его в первую позицию.

0
ответ дан 3 December 2019 в 23:26

Учитывая, что вы хотите исключить преобразование определенного трафика через NAT к вашему прокси-серверу, правило для этого должно быть помещено перед другими. И я бы не стал включать его в вашу определяемую пользователем цепочку intercept-nat , поскольку эта цепочка логически предназначена для выполнения NAT, а не для того, чтобы не делать этого.

Просто:

iptables -t nat -A PREROUTING -d w.x.y.z -p tcp --dport 443 -j ACCEPT

где wxyz - это адрес сервера websocket.

Кроме того, я бы изменил ваши текущие правила (хотя я предполагаю некоторые вещи здесь):

  • Я думаю, вам не нужно указывать исходные IP-адреса в разделе сопоставления, поскольку вы, вероятно, просто хотите перенаправить весь трафик из вашей внутренней сети. Я предполагаю, что eth0 - это внешний LAN, а eth1 и eth2 - внутренние.
  • Вам, вероятно, также не нужно указывать IP-адрес назначения. , экономя некоторое количество циклов процессора. Я предполагаю, что веб-трафик не направляется на прокси-машину, если на ней не запущен веб-сервер.
  • Если прокси-сервер работает на том же компьютере, что и брандмауэр, вы также можете не указывать IP-адрес назначения для использования в DNAT используется вместо REDIRECT .

Отказ от указания IP-адресов улучшает обслуживание, позволяет повторно использовать и упрощает работу. Все вместе будет:

-A PREROUTING -d w.x.y.z/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING ! -i eth0 -j intercept-nat
-A intercept-nat -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3126 -m comment --comment "intercept-nat"
-A intercept-nat -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127 -m comment --comment "intercept-nat"
0
ответ дан 3 December 2019 в 23:26

Теги

Похожие вопросы