У меня есть брандмауэр между 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 проблемы
- Вы остановились
-t nat
, поэтому он пытается добавитьPREROUTING
цепочку вfilter
таблице, которой не существует. - «Не» (
!
) должно стоять перед-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