LINUX.ORG.RU

iptables DNAT!


0

0

Никак не пойму как реализовать DNAT в iptables. Вот полностью открыл все что можно:

iptables -P FORWARD ACCEPT iptables -A FORWARD -i $INET_IFACE -j ACCEPT iptables -A FORWARD -i $LAN_IFACE -j ACCEPT

iptables -t nat -A PREROUTING -d $INET_IP -p tcp --dport 80 \ -j DNAT --to-destination 192.168.1.2:80

Конекчусь на $INET_IP:80. А пакеты все равно на 192.168.1.2:80 не переадресуются. В чем проблема никак не поуму. Даже лог делал PREROUTING выполняется, а если делать лог FORWARD то туда ничего не приходит.

anonymous

Привет. Непонятно почему после -P ... ACCEPT, стоит еще куча -j ACCEPT. Здесь, вроде, все верно. Что говорит iptables-save и route?

P.S. Это скорее в раздел admin :-).

lego_12239
()
Ответ на: комментарий от lego_12239

вот что выдает: iptables-save и route *nat :PREROUTING ACCEPT [611:127165] :POSTROUTING ACCEPT [44:7192] :OUTPUT ACCEPT [44:7192] -A PREROUTING -d 80.xx.xx.xxx -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.22:80 COMMIT # Completed on Wed Nov 15 18:36:25 2006 # Generated by iptables-save v1.2.11 on Wed Nov 15 18:36:25 2006 *mangle :PREROUTING ACCEPT [134577:46373259] :INPUT ACCEPT [150535:52048212] :FORWARD ACCEPT [3:144] :OUTPUT ACCEPT [227523:45878940] :POSTROUTING ACCEPT [256002:51799071] COMMIT # Completed on Wed Nov 15 18:36:25 2006 # Generated by iptables-save v1.2.11 on Wed Nov 15 18:36:25 2006 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT DROP [0:0] :allowed - [0:0] :bad_tcp_packets - [0:0] :icmp_packets - [0:0] :tcp_packets - [0:0] :udp_packets - [0:0] -A INPUT -p tcp -j bad_tcp_packets -A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT -A INPUT -s 127.0.0.1 -i lo -j ACCEPT -A INPUT -s 192.168.1.3 -i lo -j ACCEPT -A INPUT -s 80.xx.xx.xxx -i lo -j ACCEPT -A INPUT -i eth1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT -A INPUT -d 80.xx.xx.xxx -j ACCEPT -A INPUT -i eth0 -p tcp -j tcp_packets -A INPUT -i eth0 -p udp -j udp_packets -A INPUT -i eth0 -p icmp -j icmp_packets -A FORWARD -p tcp -j bad_tcp_packets -A FORWARD -i eth1 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -j ACCEPT -A FORWARD -i eth1 -j ACCEPT -A FORWARD -j LOG --log-prefix "FORWARD: " --log-level 7 -A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT FORWA RD packet died: " --log-level 7 -A OUTPUT -p tcp -j bad_tcp_packets -A OUTPUT -s 127.0.0.1 -j ACCEPT -A OUTPUT -s 192.168.1.3 -j ACCEPT -A OUTPUT -s 80.xx.xx.xxx -j ACCEPT -A allowed -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT -A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A allowed -p tcp -j DROP -A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NE W -j REJECT --reject-with tcp-reset -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn:" -A bad_tcp_packets -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP -A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT -A tcp_packets -p tcp -m tcp --dport 21 -j allowed -A tcp_packets -p tcp -m tcp --dport 8022 -j allowed -A tcp_packets -p tcp -m tcp --dport 80 -j allowed -A udp_packets -p udp -m udp --dport 53 -j ACCEPT -A udp_packets -p udp -m udp --dport 123 -j ACCEPT -A udp_packets -p udp -m udp --dport 2074 -j ACCEPT -A udp_packets -p udp -m udp --dport 4000 -j ACCEPT COMMIT

# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 80.xx.xx.0 * 255.255.255.0 U 0 0 0 eth0 default 192.168.1.224 0.0.0.0 UG 0 0 0 eth1 #

cat /proc/sys/net/ipv4/ip_forward выдает 1

anonymous
()
Ответ на: комментарий от anonymous

вот что выдает: iptables-save и route
*nat
:PREROUTING ACCEPT [611:127165]
:POSTROUTING ACCEPT [44:7192]
:OUTPUT ACCEPT [44:7192]
-A PREROUTING -d 80.xx.xx.xxx -p tcp -m tcp --dport 80 -j DNAT --to-destination                                                             192.168.1.22:80
COMMIT
# Completed on Wed Nov 15 18:36:25 2006
# Generated by iptables-save v1.2.11 on Wed Nov 15 18:36:25 2006
*mangle
:PREROUTING ACCEPT [134577:46373259]
:INPUT ACCEPT [150535:52048212]
:FORWARD ACCEPT [3:144]
:OUTPUT ACCEPT [227523:45878940]
:POSTROUTING ACCEPT [256002:51799071]
COMMIT
# Completed on Wed Nov 15 18:36:25 2006
# Generated by iptables-save v1.2.11 on Wed Nov 15 18:36:25 2006
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
:allowed - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_packets - [0:0]
:udp_packets - [0:0]
-A INPUT -p tcp -j bad_tcp_packets
-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.1.3 -i lo -j ACCEPT
-A INPUT -s 80.xx.xx.xxx -i lo -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A INPUT -d 80.xx.xx.xxx -j ACCEPT
-A INPUT -i eth0 -p tcp -j tcp_packets
-A INPUT -i eth0 -p udp -j udp_packets
-A INPUT -i eth0 -p icmp -j icmp_packets
-A FORWARD -p tcp -j bad_tcp_packets
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j LOG --log-prefix "FORWARD: " --log-level 7
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT FORWA                                                            RD packet died: " --log-level 7
-A OUTPUT -p tcp -j bad_tcp_packets
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.1.3 -j ACCEPT
-A OUTPUT -s 80.xx.xx.xxx -j ACCEPT
-A allowed -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NE                                                            W -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state                                                             NEW -j LOG --log-prefix "New not syn:"
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state                                                             NEW -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A tcp_packets -p tcp -m tcp --dport 21 -j allowed
-A tcp_packets -p tcp -m tcp --dport 8022 -j allowed
-A tcp_packets -p tcp -m tcp --dport 80 -j allowed
-A udp_packets -p udp -m udp --dport 53 -j ACCEPT
-A udp_packets -p udp -m udp --dport 123 -j ACCEPT
-A udp_packets -p udp -m udp --dport 2074 -j ACCEPT
-A udp_packets -p udp -m udp --dport 4000 -j ACCEPT
COMMIT


# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
80.xx.xx.0      *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.224   0.0.0.0         UG    0      0        0 eth1
#


cat /proc/sys/net/ipv4/ip_forward выдает 1

anonymous
()
Ответ на: комментарий от anonymous

Ну, и наворочано же у тебя :-).
Извини, точно пока не скажу, но кажется где-то здесь:

-A allowed -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

пакеты рубятся.

P.S. Сдается мне у тебя много лишнего. Например по-умолчанию на 
forward цепь в filter стоит accept, а ты пишешь правила с accept, 
которые только сбивают с толку. 
До 

-A FORWARD -j LOG --log-prefix "FORWARD: " --log-level 7

вообще, ничего дойти недолжно :-).Почиcтил бы :-).

lego_12239
()
Ответ на: комментарий от lego_12239

Ребята спасибо всем что уделили мне время и попытались помочь! Я сам тока чта нашел решение этой проблемы!!!!!

Все просто до нельзя!!! На машинал в локальной сети необходимо прописать шлюз по умолчанию на ваш шлюз, то есть по моему конфигу на $LAN_IP.

А так как я тестировал этот шлюз при реально работающем другом шлюзе(DLINK) то все компутеры в локальнгой сети посылали ОТВЕТНЫЕ пакеты через этот самый DLINK(который и был у них прописан)!!!

Стоило мне пробисать адрес нового шлюза как все заработало, поэтому кстати и был у меня таймаут, соединение установлено а обратного ответа нет.

to lego_12239 Да согласен у меня конфиг избыточный очень много правил, просто искал где проблема вот и натыкал везде ACCEPT. Теперь значительно упрощу его.

а вот эти строки из реального iptables tutorial: -A allowed -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT -A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

С ними все работате!

anonymous
()
Ответ на: комментарий от lego_12239

Ребята спасибо всем что уделили мне время и попытались помочь! Я сам тока чта нашел решение этой проблемы!!!!!

Все просто до нельзя!!! На машинал в локальной сети необходимо прописать шлюз по умолчанию на ваш шлюз, то есть по моему конфигу на $LAN_IP.

А так как я тестировал этот шлюз при реально работающем другом шлюзе(DLINK) то все компутеры в локальнгой сети посылали ОТВЕТНЫЕ пакеты через этот самый DLINK(который и был у них прописан)!!!

Стоило мне пробисать адрес нового шлюза как все заработало, поэтому кстати и был у меня таймаут, соединение установлено а обратного ответа нет.

to lego_12239 Да согласен у меня конфиг избыточный очень много правил, просто искал где проблема вот и натыкал везде ACCEPT. Теперь значительно упрощу его.

а вот эти строки из реального iptables tutorial: -A allowed -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT -A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

С ними все работате!

anonymous
()
Ответ на: комментарий от anonymous

Да, незачто; ничем же не помог :-). Хорошо, что разобрался и спасибо, что отписал по этому поводу. Заходи еще :-).

P.S. Default gateway... как все было просто :-)... даже что-то не подумал... :-)

lego_12239
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.