Теперь я играл с iptables (целый день), чтобы мои правила работали, но есть одна проблема ... весь трафик, который я перенаправляю, проходит через мой сервер и обратно через мой сервер. Мы говорим о высокой пропускной способности HIGH. Поэтому я надеялся, что есть возможность перенаправить пользователя на внешний глобальный IP-адрес, чтобы он напрямую общался с внешним IP-адресом и IP-адресом пользователя.
Я сделал:
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 11.111.11.111:25
iptables -t nat -A POSTROUTING -j MASQUERADE
* это просто пример, реальный проект - это не порт 25, а также другая программа (мы работаем над ...)
Но теперь весь трафик идет так: User> MyServer> ExternalServer> MyServer> User
но я надеялся получить что-то вроде этого: User> MyServer> ExternalServer> User
Подобно CNAME или, возможно, перенаправлению htacces. Возможно ли что-то подобное?
я считать вы хотите перенаправление xinetd, а не iptables (мне никогда не приходилось делать это в гневе). Попробуй это:
# /etc/xinetd.d/redirect25 service redirect25 { port = 25 type = UNLISTED disable = no socket_type = stream wait = no user = root redirect = 11.111.11.111 25 }
затем перезапустите xinetd. Возможно, вам придется учитывать проблемы ретрансляции, учитывая, что это почтовый порт.
Вероятно, вам нужно использовать что-то вроде Виртуальный сервер Linux с LVS / TUN или LVS / DR методы. Они создают виртуальный IP-адрес на балансировщике нагрузки, который затем туннелирует или напрямую направляет входящие пакеты на внутренние серверы, сохраняя исходный IP-адрес источника и назначения (в отличие от NAT). Затем внутренние серверы могут направлять ответные пакеты напрямую клиенту, а не через балансировщик нагрузки.
Я не думаю, что это можно сделать только с помощью iptables.