IPTABLES PREROUTING весь трафик в подсети прозрачно для прокси, за исключением

IPTABLES PREROUTING весь трафик в подсети прозрачно для прокси, за исключением

У меня есть брандмауэр между 192.168.255.0 и 172.16.255.0. Оба /24. 192.168.255.0 получает DNAT на прокси-сервер @ 172.16.255.5:8080. Я хочу, чтобы это продолжалось, однако у меня есть веб-сервер 172.16.255.50, к которому я хочу подключиться напрямую для тестирования. Я попробовал это выражение, но iptables продолжает выдавать ошибку при попытке добавить его

iptables -I PREROUTING -i eth1 -d \! 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

Спасибо!!

решение1

Здесь есть 2 проблемы

  1. Вы остановились -t nat, поэтому он пытается добавить PREROUTINGцепочку в filterтаблице, которой не существует.
  2. «Не» ( !) должно стоять перед -d.

Рабочее решение:

iptables -t nat -I PREROUTING -i eth1 \! -d 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080


Альтернативный способ сделать что-то подобное — поместить правило перед тем, которое соответствует трафику исключений и ничего с ним не делает. Iptables останавливается, как только достигает первого соответствующего правила, поэтому он никогда не доберется до следующего правила.

iptables -t nat -A PREROUTING -i eth1 -d 172.16.255.50 -p tcp --dport 80
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

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