На сервере CentOS, который у меня есть, я хочу перенаправить порт 8080 на сторонний веб-сервер.
Итак, я добавил это правило:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination thirdparty_server_ip:80
Но похоже, что это не работает.
Чтобы отладить процесс, я добавил эти два правила LOG:
iptables -t mangle -A PREROUTING -p tcp --src my_laptop_ip --dport ! 22 -j LOG --log-level warning --log-prefix "[_REQUEST_COMING_FROM_CLIENT_] "
iptables -t nat -A POSTROUTING -p tcp --dst thirdparty_server_ip -j LOG --log-level warning --log-prefix "[_REQUEST_BEING_FORWARDED_] "
(в --dport ! 22
часть предназначена только для фильтрации трафика SSH, чтобы мой файл журнала не был затоплен)
В соответствии с эта страница то mangle/PREROUTING
цепочка первая обрабатывает входящие пакеты, а nat/POSTROUTING
цепочка - последняя для обработки исходящих пакетов.
А поскольку nat/PREROUTING
Цепочка находится посередине двух других, три правила должны делать это:
mangle/PREROUTING
регистрирует входящие пакетыnat/PREROUTING
изменяет пакеты (изменяет IP-адрес и порт назначения)nat/POSTROUTING
регистрирует измененные пакеты, которые будут пересылатьсяХотя первое правило регистрирует входящие пакеты, поступающие с моего ноутбука, третье правило не регистрирует пакеты, которые должны быть изменены вторым правилом. Однако он регистрирует пакеты, которые создаются на сервере, поэтому я знаю, что два правила LOG работают правильно.
Почему пакеты не пересылаются или, по крайней мере, почему они не регистрируются третьим правилом?
PS: правил не больше, чем этих трех. Все остальные цепочки во всех таблицах пусты и с политикой ACCEPT.
Возможно, вам потребуется включить переадресацию IP на сервере. Пытаться
эхо 1> / proc / sys / net / ipv4 / ip_forward
Все это сильно зависит от того, используют ли клиенты, для которых вы выполняете DNAT, ваш NAT-блок в качестве шлюза (+ фактически ответы будут использовать ваш NAT-бокс) ИЛИ НЕ.
Я думаю, что они этого не делают, тогда следующее описывает неисправность: {
При выполнении DNAT Вы маскирование эффективного IP с помощью Relay-IP принадлежность NAT-боксу (из PoV клиентов). Таким образом, клиент ожидает взаимодействия с Relay-IP, а не с эффективным IP. Вместо этого клиент внезапно получает ответы от Effective-IP, о которых он никогда не слышал.
Таким образом, при выполнении такого маскирования без использования промежуточного шлюза между клиентом и эффективной службой вам также необходимо использовать SNAT (скрытие клиентов с помощью NAT-box-external-IP), поэтому все ответы из окна службы Effective-IP идут обратно на ваш NAT-шлюз, и только после этого будет де-NAT и отправлен обратно клиенту, который это инициировал.
}