Дело было так. Была машина которая смотрела в интернет и на ней был 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
надеюсь понятно объяснил :-)