[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