Jump to content
BulForum.com

Помощ за Port Forwarding с IPtables


exo

Recommended Posts

Здравейте,

зная че по въпроса има много материал в нета, но при мене проблема наистина е сериозен, а и днес прерових поне 100 страници по въпроса.

 

Досега съм си правил port forwarding-а с тези правила:

 

*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 80 --state NEW -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

# open the port
-A INPUT -i eth2 -p tcp -m tcp --dport 8080 -j ACCEPT

# allow connection from internet to the internal host
-A FORWARD -i eth2 -o eth0 -p tcp -d 192.168.0.234 --dport 80 -j ACCEPT

# all left RELATED (like data) and already ESTABLISHED connections from the internal host to the internet are accepted
-A FORWARD -i eth0 -o eth2 -p tcp -s 192.168.0.234 -m state --state RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT


*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

-A PREROUTING -i eth2 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.234:80

COMMIT

eth2 ми е интернета, eth0 вътрешната мрежа.

 

Известно време тези правила ги нямаше в /etc/sysconfig/iptables защото не ми се налагаше да правя port forward, но днес се наложи и се оказа че те не действат. Приемат се но на практика нищо не става

 

Пробвах какви ли не варианти и комбинаций, всичките се приемат (ако им е верен синтаксиса) но нищо не се случва.

Препращането на пакети в ядрото го разрешавам чрез /etc/rc.d/rc.local:

modprobe iptable_nat
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "1" >/proc/sys/net/ipv4/tcp_syncookies

Доставчикът ми не филтрира портответе които ползвам. Дистрото ми е Fedora 8.

Моля ви, Много ви моля помогнете защото направо се отчаях вече :cry

Link to comment
Share on other sites

Не, тествам от друга машина която също е вързана в интернет, но е със съвсем друго реално ip в съвсем друга мрежа и не е свързана по никакъв начин с първата машина.

А иначе дава connection time out.

Link to comment
Share on other sites

Първо виж дали наистина са активирани iptables правилата с командите:

iptables -nL
iptables -t nat -nL

 

След това виж къде точно спират пакетите със следните tcpdump команди (най-добре ги пусни едновременно в две отделни терминални сесии):

tcpdump -vvn -i eth0 tcp port 80
tcpdump -vvn -i eth2 tcp port 8080

 

Сигурен ли си, че на машината с адрес 192.168.0.234 не работи firewall или ако работи съответно пропуска пакети до порт 80?

Link to comment
Share on other sites

iptables -nL
Chain INPUT (policy DROP)
target	 prot opt source			   destination
ACCEPT	 tcp  --  0.0.0.0/0			0.0.0.0/0		   tcp dpt:8080
ACCEPT	 all  --  0.0.0.0/0			0.0.0.0/0
ACCEPT	 icmp --  0.0.0.0/0			0.0.0.0/0		   icmp type 255
ACCEPT	 all  --  0.0.0.0/0			0.0.0.0/0		   state RELATED,ESTABLISHED
ACCEPT	 tcp  --  0.0.0.0/0			0.0.0.0/0		   state NEW tcp dpt:80
REJECT	 all  --  0.0.0.0/0			0.0.0.0/0		   reject-with icmp-host-prohibited

Chain FORWARD (policy DROP)
target	 prot opt source			   destination
ACCEPT	 tcp  --  0.0.0.0/0			192.168.0.234	   tcp dpt:80
ACCEPT	 tcp  --  192.168.0.234		0.0.0.0/0		   state RELATED,ESTABLISHED
REJECT	 all  --  0.0.0.0/0			0.0.0.0/0		   reject-with icmp-host-prohibited

Chain OUTPUT (policy DROP)
target	 prot opt source			   destination
ACCEPT	 all  --  0.0.0.0/0			0.0.0.0/0
ACCEPT	 all  --  0.0.0.0/0			0.0.0.0/0		   state NEW,RELATED,ESTABLISHED

iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target	 prot opt source			   destination
DNAT	   tcp  --  0.0.0.0/0			0.0.0.0/0		   tcp dpt:8080 to:192.168.0.234:80

Chain POSTROUTING (policy ACCEPT)
target	 prot opt source			   destination

Chain OUTPUT (policy ACCEPT)
target	 prot opt source			   destination

tcpdump -vvn -i eth2 tcp port 8080
tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
13:40:16.949848 IP (tos 0x10, ttl 62, id 37346, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33550 > YYY.YYY.YYY.YYY.webcache: S, cksum 0x3c2d (correct), 1734290557:1734290557(0) win 5840 <mss 1460,sackOK,timestamp 24824148 0,nop,wscale 6>
13:40:22.948335 IP (tos 0x10, ttl 62, id 37347, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33550 > YYY.YYY.YYY.YYY.webcache: S, cksum 0x24bd (correct), 1734290557:1734290557(0) win 5840 <mss 1460,sackOK,timestamp 24830148 0,nop,wscale 6>
13:40:35.194044 IP (tos 0x10, ttl 62, id 58107, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33553 > YYY.YYY.YYY.YYY.webcache: S, cksum 0x1b2d (correct), 2066346596:2066346596(0) win 5840 <mss 1460,sackOK,timestamp 24842399 0,nop,wscale 6>
13:40:38.192895 IP (tos 0x10, ttl 62, id 58108, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33553 > YYY.YYY.YYY.YYY.webcache: S, cksum 0x0f75 (correct), 2066346596:2066346596(0) win 5840 <mss 1460,sackOK,timestamp 24845399 0,nop,wscale 6>
13:40:44.189698 IP (tos 0x10, ttl 62, id 58109, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33553 > YYY.YYY.YYY.YYY.webcache: S, cksum 0xf804 (correct), 2066346596:2066346596(0) win 5840 <mss 1460,sackOK,timestamp 24851399 0,nop,wscale 6>

5 packets captured
5 packets received by filter
0 packets dropped by kernel

tcpdump -vvn -i eth0 tcp port 80
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:40:16.949846 IP (tos 0x10, ttl 61, id 37346, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33550 > 192.168.0.234.http: S, cksum 0x9ae1 (correct), 1734290557:1734290557(0) win 5840 <mss 1460,sackOK,timestamp 24824148 0,nop,wscale 6>
13:40:22.948402 IP (tos 0x10, ttl 61, id 37347, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33550 > 192.168.0.234.http: S, cksum 0x8371 (correct), 1734290557:1734290557(0) win 5840 <mss 1460,sackOK,timestamp 24830148 0,nop,wscale 6>
13:40:35.194114 IP (tos 0x10, ttl 61, id 58107, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33553 > 192.168.0.234.http: S, cksum 0x79e1 (correct), 2066346596:2066346596(0) win 5840 <mss 1460,sackOK,timestamp 24842399 0,nop,wscale 6>
13:40:38.192938 IP (tos 0x10, ttl 61, id 58108, offset 0, flags [DF], proto TCP (6), length 60) XXX.XXX.XXX.XXX.33553 > 192.168.0.234.http: S, cksum 0x6e29 (correct), 2066346596:2066346596(0) win 5840 <mss 1460,sackOK,timestamp 24845399 0,nop,wscale 6>

4 packets captured
8 packets received by filter
0 packets dropped by kernel

 

с XXX.XXX.XXX.XXX съм отбелязал IP-то на машината от която правя теста, а с YYY.YYY.YYY.YYY IP-то на машината на която се опитвам да го направя тоя пусти port forwarding ...

Машината на 192.168.0.234 си приема съвсем нормално заявките от машината на която се опитвам да направя port forward-а, a на 0.234 работи един ши*ан IIS:

telnet 192.168.0.234 80
Trying 192.168.0.234...
Connected to 192.168.0.234.
Escape character is '^]'.
blah
HTTP/1.1 400 Bad Request
Content-Type: text/html
Date: Wed, 06 Feb 2008 12:11:57 GMT
Connection: close
Content-Length: 35

<h1>Bad Request (Invalid Verb)</h1>Connection closed by foreign host.

Почвам да си мисля вече дали има друг начин защото от това което видях и пробвах до тук стигам до извода че с iptables няма да стане ... :cry

Link to comment
Share on other sites

flushni iptables zapisite , pusni posle samo nata i port forwarda, taka shte razberesh dali e ot samiq dostavchik ili ot firewalla

И това ми мина през акъла днеска и го направих ама не - от iptables-а е, не е от доставчика.

Link to comment
Share on other sites

И това ми мина през акъла днеска и го направих ама не - от iptables-а е, не е от доставчика.

 

Port forwarding-а ти работи перфектно, според tcpdump логовeте, които си пуснал. Причината е изцяло в машината с IP 192.168.0.234. Тя изобщо не отговаря на SYN пакетите към порт 80, които очевидно отиват към нея. Погледни пак какъв firewall работи там и какви са рестрикциите. ;)

 

Има и друг момент - правилното рутиране. Eth0 на линукс машината трябва да се явява default router за 192.168.0.234.

Link to comment
Share on other sites

Както се казва леееелееее ...

Точно това излезе машината на 192.168.0.234 се поддържа от мой колега аз нямам достъп до нея. Тъй като в момента правя промени по мрежата на която работи тази машина и сменям и gateway-я с друг бях изрично му казал да си оправи настройките на мрежата и да си смени Default Gateway-я с този на който аз се опитвам да направя port forward-а. Обаче той забравил, беше в командировка два дена и сега като дойде го накарах да го провери.

Ужас, пълен смях :D Аз се мъча няколко дена да го направя това а той пича си забравил ... :D

Да се чуди човек да се смее ли да плаче ли или да се ядосва.

Както и да е БЛАГОДАРЯ на всички които се отзоваха на моя зов за помощ. Благодаря ви наистина много :laughing:

Специално Благодаря на Godfather че ми отвори очите къде може да е цялата работа. 10x

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...