Как сделать исключение, чтобы не перенаправлять на порт localhost:?
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8000
Два варианта:
Вариант 1: исключить пункт назначения localhost из правила:
iptables -t nat -A OUTPUT -p tcp -m tcp ! -d 127.0.0.1 --dport 80 -j DNAT --to-destination 127.0.0.1:8000
Это быстрое и простое, эффективное, но ограниченное решение.
Вариант 2: Сделайте перед этим правило, которое не перенаправляет. Он сопоставит и завершит обработку этой цепочки, поэтому следующие правила не будут выполняться, включая ваш повторный запрос:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -d 127.0.0.1 -j ACCEPT
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8000
Этот вариант более общий и применим к случаю, когда у вас есть список исключений, которые вы не можете выразить вместе в одном правиле.
Можете уточнить, чем вы хотите заниматься? Если я не ошибаюсь, ваше правило действует только на localhost !?
Чтобы иметь "исключения", просто добавьте перед ним ту же строку и измените -j ACCEPT
ну и конечно условие исключения.