LINUX.ORG.RU
ФорумAdmin

Iptables forward DNAT/SNAT и хочется странного.

 , ,


0

1

Дело было так. Была машина которая смотрела в интернет и на ней был www-сервер. Пришлось машину переставлять в другое место, где в инет смотрит уже не сама машина, а некий роутер (IpExt 18.22.22.22 IpIn 192.168.10.1). Теперь у нашего www-сервера IP 192.168.10.1 и на роутере прокинули 80й порт следующим образом:

-A FORWARD -d 192.168.10.4/32 -i eth0 -o eth2 -p tcp -m tcp --dport 80 -j ACCEPT
-A PREROUTING -d 18.22.22.22/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.4:80
-A OUTPUT -d 18.22.22.22/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.4:80
-A POSTROUTING -d 192.168.10.4/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.10.1

Всё работает и www-сервер отвечает. Вот только в логах самого www-сервера теперь светится только внутренний IP 192.168.10.1, что вобщем то логично, но не красиво.

Вопрос: можно ли и как прокинуть порт, что бы IP источника не менялся?

на примере: сейчас адрес менятся

  • 1. приходит пакет с 5.5.5.5:10500 -> 18.22.22.22:80
  • 2. iptables меняет IP и порты и форвардит его на www-сервер 192.168.10.1:30100 -> 192.168.10.1:80
  • 3. приходит ответ от www-сервера 192.168.10.1:80-> 192.168.10.2:30100
  • 4. делается обратная замена и пакет отправляется откуда пришел меняется на 18.22.22.22:80 -> 5.5.5.5:10500

Так вот можно ли добится что бы внешний IP не менялся, а оставался внешним?

Типа так:

  • 1. 5.5.5.5:10500 -> 18.22.22.22:80
  • 2. 5.5.5.5:10500 -> 192.168.10.1:80
  • 3. 192.168.10.1:80-> 5.5.5.5:10500
  • 4. 18.22.22.22:80 -> 5.5.5.5:10500

надеюсь понятно объяснил :-)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.