Господа с iptables уже дел не имел давно так что если что извиняйте.
Вот подвернулась задача просто перебросить порты с одного сервера на другой.
Написал маленький скрипт
-----------------------------------------
#!/bin/shEXT_IP=XXX.XXX.XXX.XXX
INT_IP=192.168.2.1
EXT_IF=eth1
PORT1=443
PORT2=443iptables -F
iptables -F -t nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $PORT2 -j DNAT --to-destination $INT_IP:$PORT1
iptables -t nat -A POSTROUTING -s $INT_IP -o $EXT_IF -p tcp -m tcp --dport $PORT1 -j SNAT --to-source $EXT_IP
iptables -A FORWARD -d $INT_IP -p tcp -m tcp --dport $PORT1 -m state --state NEW -j ACCEPT
-----------------------------------------------------При запуске никаких ошибок не возникает
iptables -L и iptables -L -t nat показывают что все правила применились.Тем не менее ничего не работает никакой переброски не наблюдается. При этом телнет на машину 192.168.2.1 443 отрабатывает и подключается, а тот же телнет на XXX.XXX.XXX.XXX 443 - получаю таймаут.
проверил
cat /proc/sys/net/ipv4/ip_forward
1
Далее проверил что модуль загружен
lsmod
Module Size Used by
ipt_state 3393 1
iptable_filter 4673 1
iptable_nat 31077 1
ip_conntrack 54297 2 ipt_state,iptable_nat
ip_tables 22337 3 ipt_state,iptable_filter,iptable_nat
parport_pc 29569 0
lp 15345 0
parport 44621 2 parport_pc,lpДаже не знаю уже что ещё сделать, у кого есть какие идеи?
От чего это может не работать ?
>[оверквотинг удален]
>
>iptables -F
>iptables -F -t nat
>echo 1 > /proc/sys/net/ipv4/ip_forward
>iptables -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m
>tcp --dport $PORT2 -j DNAT --to-destination $INT_IP:$PORT1
>iptables -t nat -A POSTROUTING -s $INT_IP -o $EXT_IF -p tcp -m
>tcp --dport $PORT1 -j SNAT --to-source $EXT_IP
>iptables -A FORWARD -d $INT_IP -p tcp -m tcp --dport $PORT1 -m
>state --state NEW -j ACCEPTа ESTABLISHED не хотите разрешить и FORWARD в обратную
>[оверквотинг удален]
> 29569 0
>lp
> 15345
>0
>parport
> 44621 2 parport_pc,lp
>
>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>
>От чего это может не работать ?
>[оверквотинг удален]
>> 29569 0
>>lp
>> 15345
>>0
>>parport
>> 44621 2 parport_pc,lp
>>
>>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>>
>>От чего это может не работать ?А можно если не сложно пример показать, а то не совсем понятно что и куда обратно ...
>[оверквотинг удален]
>>>0
>>>parport
>>> 44621 2 parport_pc,lp
>>>
>>>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>>>
>>>От чего это может не работать ?
>
>А можно если не сложно пример показать, а то не совсем понятно
>что и куда обратно ...покажите iptables-save
>[оверквотинг удален]
>>>> 44621 2 parport_pc,lp
>>>>
>>>>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>>>>
>>>>От чего это может не работать ?
>>
>>А можно если не сложно пример показать, а то не совсем понятно
>>что и куда обратно ...
>
>покажите iptables-saveiptables-save
# Generated by iptables-save v1.2.11 on Thu Jul 15 10:40:43 2010
*filter
:INPUT ACCEPT [133889756:33103591113]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133706573:84002194515]
-A FORWARD -d 192.168.2.1 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
COMMIT
# Completed on Thu Jul 15 10:40:43 2010
# Generated by iptables-save v1.2.11 on Thu Jul 15 10:40:43 2010
*nat
:PREROUTING ACCEPT [84008:8610341]
:POSTROUTING ACCEPT [11107:690543]
:OUTPUT ACCEPT [11076:688999]
-A PREROUTING -d XXX.XXX.XXX.XXX -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:443
-A POSTROUTING -s 192.168.2.1 -o eth1 -p tcp -m tcp --dport 443 -j SNAT --to-source XXX.XXX.XXX.XXX
COMMIT
# Completed on Thu Jul 15 10:40:43 2010
>[оверквотинг удален]
>>покажите iptables-save
>
>iptables-save
># Generated by iptables-save v1.2.11 on Thu Jul 15 10:40:43 2010
>*filter
>:INPUT ACCEPT [133889756:33103591113]
>:FORWARD ACCEPT [0:0]
>:OUTPUT ACCEPT [133706573:84002194515]
>-A FORWARD -d 192.168.2.1 -p tcp -m tcp --dport 443 -m state
>--state NEW -j ACCEPTтут и без этого все разрешено
>[оверквотинг удален]
># Completed on Thu Jul 15 10:40:43 2010
># Generated by iptables-save v1.2.11 on Thu Jul 15 10:40:43 2010
>*nat
>:PREROUTING ACCEPT [84008:8610341]
>:POSTROUTING ACCEPT [11107:690543]
>:OUTPUT ACCEPT [11076:688999]
>-A PREROUTING -d XXX.XXX.XXX.XXX -i eth1 -p tcp -m tcp --dport 443
>-j DNAT --to-destination 192.168.2.1:443
>-A POSTROUTING -s 192.168.2.1 -o eth1 -p tcp -m tcp --dport 443
>-j SNAT --to-source XXX.XXX.XXX.XXX-A POSTROUTING -s 192.168.2.1 -o eth1 -p tcp -m tcp --sport 443
-j SNAT --to-source XXX.XXX.XXX.XXXхотя лучше делать нат для всего что уходит с eth1, а фильтровать в таблице фильтров
>COMMIT
># Completed on Thu Jul 15 10:40:43 2010
>*> а ESTABLISHED не хотите разрешить и FORWARD в обратную
>А можно если не сложно пример показать, а то не совсем понятно что и куда обратно ...Соединения _состоят из тех пакетов, которые "идут" от клиента к серверу, и тех, которые "идут" _обратно. "Разрешить ESTABLISHED" и "обратные в FORWARD" обычно выглядит примерно так:
-A FORWARD -d 10.1.1.2 -j in_prtfwd
-A in_prtfwd -j in_prtfwd_eserver_s1
-A in_prtfwd -m state --state RELATED -j ACCEPT
-A in_prtfwd_eserver_s1 -p tcp --dport 4662 -m state --state NEW,ESTABLISHED -j ACCEPT-A FORWARD -s 10.1.1.2 -j out_prtfwd
-A out_prtfwd -j out_prtfwd_eserver_s1
-A out_prtfwd -m state --state RELATED -j ACCEPT
-A out_prtfwd_eserver_s1 -p tcp --sport 4662 -m state --state ESTABLISHED -j ACCEPT
Это для _одного соединения. Замечаешь "инверсию" туда-оттуда и разницу NEW,ESTABLISHED vs ESTABLISHED (и да, там же ещё и RELATED...)? Пример, упрощённый немного, вот отсюда: http://www.opennet.me/openforum/vsluhforumID1/82167.html#2...И да, за меня такие "умные" правила пишет firehol. Он же грузит модули ядра и включает ip_forward.
Использовать для анализа tcpdump я голову не приходило?
>Использовать для анализа tcpdump я голову не приходило?Пардон. "в голову", конечно. Опечаточка
>[оверквотинг удален]
> 29569 0
>lp
> 15345
>0
>parport
> 44621 2 parport_pc,lp
>
>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>
>От чего это может не работать ?По-моему, строчка с POSTROUTING ... SNAT не нужна, т.к. DNAT делает обратную подмену адреса. Второй сервер ведь не будет устанавливать новые соединения?
>[оверквотинг удален]
>>0
>>parport
>> 44621 2 parport_pc,lp
>>
>>Даже не знаю уже что ещё сделать, у кого есть какие идеи?
>>
>>От чего это может не работать ?
>
>По-моему, строчка с POSTROUTING ... SNAT не нужна, т.к. DNAT делает обратную
>подмену адреса. Второй сервер ведь не будет устанавливать новые соединения?вообще то наверно да