[Comm] tcp port mapping

Nick S. Grechukh =?iso-8859-1?q?ngrechukh_=CE=C1_ua=2Efm?=
Вт Мар 16 20:35:03 MSK 2004


В сообщении от Вторник 16 Март 2004 19:07 Alexey Morsov написал(a):
> Привет,
>
> Нужно сделать такую вещь - tcp port mapping, так что бы
> клиентская машина обращалась к маршрутизатору по порту скажем
> 10000 а тот мапил бы этот запрос в инет на порт 20000 ну и
> соответственно чтобы отклик радботал.
> Через FORWARD открывать не хочу а как провернуть через INPUT
> OUTPUT и -t nat честно говоря ума не приложу?
>
> Или может проще поднять SOCKS сервер и не мучить iptables?  Если
> да - то какой?

пункт раз:
можно через xinetd, я так делал.

пункт два:
но идея такая:
1)входящие с клиента на порт 10000 - маскарадить исходящий адрес - внешний 
адрес шлюза, destination порт - 20000.
2)входящие с порта 10000 сервера (снаружи) - мапить исходящий порт - 20000, 
исходящий ip - внутренний адрес шлюза.

что-то вроде
serv_ip=ip_внешнего_сервака
local_ip=ip_локального_интерфейса
local_eth=eth0 ## локальный интерфейс
inet_ip=ip_внешнего_интерфейса
inet_eth=ppp0 ## внешний интерфейс

iptables -t nat -A PREROUTING -p tcp -d $local_ip --dport 10000 -j DNAT  
--to-destination $serv_ip:20000
iptables -A FORWARD -i $local_eth -d $serv_ip -p tcp --dport 20000 -j ACCEPT
iptables -t nat -A POSTROUTING -o $inet_eth -j SNAT --from $inet_ip
это первая часть. 
вторую часть в синтаксисе iptables сходу не скажу, man iptables.


Подробная информация о списке рассылки community