linux/iptables; перенаправление пакетов на другой хост, chep, 29-Июл-05, 20:06 [смотреть все]Народ, помогите, плиз, Казалось бы простая задача, но не знаю как сделать. В одной подсети находится linux-host с одним интерфейсом и клиент-hosts. Хочу, что бы клиенты конектились к linux, а мой linux-host перенаправлял бы все tcp запросы на третий хост. Причём, с подменой адресов (подчеркиваю). Зачем это нужно, сейчас не говорю. Насколько я понимаю, надо использовать и DNAT и SNAT.Пробую: # iptables -A PREROUTING -i eth0 -p all -d $LINUX_HOST_IP -j DNAT --to-destination $TRETIY_HOST # iptables -A POSTROUTING -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP # iptables -A FORWARD -i eth0 -j ACCEPT # ping $LINUX_HOST_IP 64 bytes from $TRETIY_HOST: icmp_seq=0 ttl=128 time=0.561 ms 64 bytes from $TRETIY_HOST: icmp_seq=1 ttl=128 time=0.549 ms 64 bytes from $TRETIY_HOST: icmp_seq=2 ttl=128 time=0.546 ms ^^^^^^^^^^^^ Круто, icmp работает. А tcp не работает: # ftp 10.1.4.42 Connected to 10.1.4.42. 220 (vsFTPd 2.0.3) 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name ($LINUX_HOST_IP:root): ^^^^^^^^^^^ Почему tcp не перенаправляется на $TRETIY_HOST? Где грабля? |
- linux/iptables; перенаправление пакетов на другой хост, Georgyi, 16:22 , 03-Авг-05 (1)
>Народ, помогите, плиз, >Казалось бы простая задача, но не знаю как сделать. >В одной подсети находится linux-host с одним интерфейсом и клиент-hosts. Хочу, что >бы клиенты конектились к linux, а мой linux-host перенаправлял бы все >tcp запросы на третий хост. Причём, с подменой адресов (подчеркиваю). Зачем >это нужно, сейчас не говорю. Насколько я понимаю, надо использовать и >DNAT и SNAT. > >Пробую: ># iptables -A PREROUTING -i eth0 -p all -d $LINUX_HOST_IP -j DNAT >--to-destination $TRETIY_HOST ># iptables -A POSTROUTING -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP > ># iptables -A FORWARD -i eth0 -j ACCEPT > ># ping $LINUX_HOST_IP >64 bytes from $TRETIY_HOST: icmp_seq=0 ttl=128 time=0.561 ms >64 bytes from $TRETIY_HOST: icmp_seq=1 ttl=128 time=0.549 ms >64 bytes from $TRETIY_HOST: icmp_seq=2 ttl=128 time=0.546 ms > > ^^^^^^^^^^^^ >Круто, icmp работает. >А tcp не работает: > ># ftp 10.1.4.42 >Connected to 10.1.4.42. >220 (vsFTPd 2.0.3) >530 Please login with USER and PASS. >KERBEROS_V4 rejected as an authentication type >Name ($LINUX_HOST_IP:root): > ^^^^^^^^^^^ >Почему tcp не перенаправляется на $TRETIY_HOST? Где грабля? не все так просто, на всех клиентах надо указать маршрут, что сеть эта доступна через твой маршрутизатор, тогда может что то получится
- linux/iptables; перенаправление пакетов на другой хост, chep, 18:19 , 03-Авг-05 (2)
>не все так просто, >на всех клиентах надо указать маршрут, что сеть эта доступна через твой >маршрутизатор, тогда может что то получится На самом деле, tcp заработал после того, как я прописал source. Но на вопрос, почему без указания source ничего не работало, я ответить не могу. Мистика. :) Невежество порождает суеверия ))) -A PREROUTING -i eth0 -s $NETWORK_OR_CLIENT_ADDR -d $LINUX_HOST_IP -p all -j DNAT --to-destination $TRETIY_HOST ^^^^^^^^^^^^^^^^^^^ -A POSTROUTING -o eth0 -p all -d $TRETIY_HOST -j SNAT --to-source $LINUX_HOST_IP Прилагаю схему, если кому интересно. ___ | |Server ($TRETIY_HOST) |___| | _____|______________________ | | | ___|___ | | |Firewal| |_______| | | | _____________|______________ | | | | _|_ _|_ _|_ _|_ | 1 | | 2 | | 3 | |xxx| |___| |___| |___| |___| Clients LINUX_HOST Через firewall к TRETIY_HOST можно ходить только LINUX_HOST. А все клиенты должны идти через него.
- linux/iptables; перенаправление пакетов на другой хост, chep, 18:26 , 03-Авг-05 (3)
Ещё дополню: Через firewall к TRETIY_HOST можно ходить только LINUX_HOST. Все клиенты должны идти через него. Таким образом, клиенты думают, что $TRETIY_HOST - это $LINUX_HOST. А Server думает, что $LINUX_HOST - это клиенты.
|