Титла: Iptables port forwarding не сработва
Публикувано от: mihailmilev в Jun 20, 2007, 19:57
Имам два сървъра. Първият да го кръстим "външен" е със статично реално IP. На него вървят ssh, httpd, mysql. Вторият - "вътрешен" е с IP 192.168.1.102 и на него вървят същите демони. Идеята ми е: като се обърнат към външният сървър на порт 8080 да се осъщствява port forwarding към 80-ти порт на вътрешния сървър. И на идвата сървъра iptables е спрян, тоест всичко е на ACCEPT. На външния сървър пиша следните две команди: Примерен код | echo "1" > /proc/sys/net/*/ip_forward iptables -A PREROUTING -i xxx.xxx.xxx.xxx -p tcp --dport 8080 -j DNAT --to 192.168.1.102:80 | . Те би трябвало да осъществят исканата от мен задача, но - не! Браузърът (който и да е) дава, че няма връзка. Telnet към 8080 на външния сървър също не работи. Ако някой има идея да помага. Системите са Федора 5 (външен) и Федора 7 (вътрешен). Ако имате други въпроси питайте!
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 20, 2007, 20:30
Ох ... да взема да го напиша веднъж цялото ... Примерен код | #!/bin/bash ipt="/usr/local/sbin/iptables"
# Външен интерфейс на рутера extIF="eth0"
# Външни ИП и порт на рутера sIP="91.92.0.1" sPort="8008"
# Вътрешни ИП и порт на машината зад рутера pmIP="192.168.1.3" pmPort="80"
# Протокол pmProt="tcp"
# Portm map $ipt -t nat -I PREROUTING -i $extIF -p $pmProt -d $sIP --dport $sPort -j DNAT --to-destination $pmIP:$pmPort
$ipt -I FORWARD -p $pmProt -s $pmIP --sport $pmPort -j ACCEPT $ipt -I FORWARD -p $pmProt -d $pmIP --dport $pmPort -j ACCEPT
|
Титла: Iptables port forwarding не сработва
Публикувано от: neter в Jun 20, 2007, 20:30
От дадения пример махни "-i xxx.xxx.xxx.xxx" и го замени с "-t nat". Почети по въпроса защо 
Титла: Iptables port forwarding не сработва
Публикувано от: arda_kj в Jun 20, 2007, 20:34
Здрасти. Незнам колко ще ти помогна, ама ще пробвам. Ще те насоча, а пък ако ти помогне, помогне ако не, не.
Аз така като гледам всичко е правилно само, че се питам това нещо не се ли задаваше в таблицата
-t nat
Понеже ме мързи да чета менове и документация оставям го на теб да провериш и пробваш
Титла: Iptables port forwarding не сработва
Публикувано от: arda_kj в Jun 20, 2007, 20:35
Явно сте ме изпревари ли 
Титла: Iptables port forwarding не сработва
Публикувано от: mihailmilev в Jun 20, 2007, 22:56
Цитат (neter @ Юни 20 2007,21:30) | От дадения пример махни "-i xxx.xxx.xxx.xxx" и го замени с "-t nat". Почети по въпроса защо  |
Мтакам, знам защо -t nat ... Просто съм го пропуснал да го напиша. Като се замислим ако не го добавя, то iptables ще ми даде грешка веднага че не намира дадената таблица. Така че - правописна грешка... А защо да махам "-i xxx.xxx.xxx.xxx" ... все пак искам да конкретизирам точно за кой адрес става!!!
@VladSun, пуснах скрипта с леки промени, но пак не работи. Ето какво дава iptables: Примерен код | Chain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 192.168.1.102 tcp dpt:3306 ACCEPT tcp -- 192.168.1.102 0.0.0.0/0 tcp spt:3306
Chain OUTPUT (policy ACCEPT) target prot opt source destination
Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 xxx.xxx.xxx.xxx tcp dpt:33306 to:192.168.1.102:3306
Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT tcp -- 192.168.1.102 0.0.0.0/0 tcp spt:3306 to:xxx.xxx.xxx.xxx:33306
Chain OUTPUT (policy ACCEPT) target prot opt source destination
|
Тук вече се опитвам да рутирам 33306 към 3306 както се вижда.
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 20, 2007, 23:03
ifconfig, route -n на вътрешната и външната машина? и пускай iptables -nxvL вместo -nL, че дава повече инфо.
Титла: Iptables port forwarding не сработва
Публикувано от: mihailmilev в Jun 20, 2007, 23:20
Цитат (VladSun @ Юни 21 2007,00:03) | ifconfig, route -n на вътрешната и външната машина? и пускай iptables -nxvL вместo -nL, че дава повече инфо. |
Външната машина:
Примерен код | eth0 Link encap:Ethernet HWaddr 00:50:DA:51:17:18 inet addr:xxx.xxx.xxx.xxx Bcast:212.104.96.255 Mask:255.255.255.0 inet6 addr: fe80::250:daff:fe51:1718/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:434621 errors:0 dropped:0 overruns:0 frame:0 TX packets:461630 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:53962496 (51.4 MiB) TX bytes:120013962 (114.4 MiB) Interrupt:18 Base address:0x6e80
eth1 Link encap:Ethernet HWaddr 00:C0:26:79:DD:3A inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2c0:26ff:fe79:dd3a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:50060 errors:0 dropped:0 overruns:0 frame:0 TX packets:21098 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4829129 (4.6 MiB) TX bytes:5081791 (4.8 MiB) Interrupt:17 Base address:0xf00
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:332 errors:0 dropped:0 overruns:0 frame:0 TX packets:332 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:117580 (114.8 KiB) TX bytes:117580 (114.8 KiB)
Chain INPUT (policy ACCEPT 139 packets, 10504 bytes) pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 3 156 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.102 tcp dpt:3306 0 0 ACCEPT tcp -- * * 192.168.1.102 0.0.0.0/0 tcp spt:3306
Chain OUTPUT (policy ACCEPT 122 packets, 18940 bytes) pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 2 packets, 80 bytes) pkts bytes target prot opt in out source destination 1 52 DNAT tcp -- eth0 * 0.0.0.0/0 xxx.xxx.xxx.xxx tcp dpt:33306 to:192.168.1.102:3306
Chain POSTROUTING (policy ACCEPT 2 packets, 380 bytes) pkts bytes target prot opt in out source destination 0 0 SNAT tcp -- * eth0 192.168.1.102 0.0.0.0/0 tcp spt:3306 to:xxx.xxx.xxx.xxx:33306
Chain OUTPUT (policy ACCEPT 1 packets, 328 bytes) pkts bytes target prot opt in out source destination
|
Вътрешна машина:
Примерен код | eth0 Link encap:Ethernet HWaddr 00:C0:26:79:EC:C3 inet addr:192.168.1.102 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2c0:26ff:fe79:ecc3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4378 errors:0 dropped:0 overruns:0 frame:0 TX packets:4090 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:488378 (476.9 KiB) TX bytes:1982735 (1.8 MiB) Interrupt:16 Base address:0x800
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
|
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 21, 2007, 00:13
route -n?
Титла: Iptables port forwarding не сработва
Публикувано от: kdpetkov в Jun 21, 2007, 07:51
Титла: Iptables port forwarding не сработва
Публикувано от: mihailmilev в Jun 21, 2007, 12:04
Външна машина: Примерен код | Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 xxx.xxx.xxx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 xxx.xxx.xxx.1 0.0.0.0 UG 0 0 0 eth0
|
Вътрешна машина:
Примерен код | Last login: Wed Jun 20 02:16:23 2007 from 192.168.1.103
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
|
@kdpetkov: И двете страници съм ги чел, не ми помагат. Т.е. правя всичко което казват, но не работи.
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 21, 2007, 13:08
Сложи на вътрешната машина gateway-a й да е външната машина (т.е. 192.168.1.103). Това да е поне за 192.168.1.0/24 мрежата.
Титла: Iptables port forwarding не сработва
Публикувано от: mihailmilev в Jun 21, 2007, 13:43
VladSun, мерси много, това реши проблема! Имаш една бира от мен 
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 21, 2007, 17:28
То хубаво, че тръгна, ама аз да си питам - нали стана ясно в детайли защо така трябва да бъде? ПП: Може ли две  ? Все пак - жега е! 
Титла: Iptables port forwarding не сработва
Публикувано от: teh в Jun 22, 2007, 19:47
VladSun, Примерен код | $ipt -t nat -I POSTROUTING -o $extIF -p $pmProt -s $pmIP --sport $pmPort -j SNAT --to-source $sIP:$sPort |
Това правило е излишно. Както и следващите две в FORWARD веригата (поне в скрипта който си написал).
Титла: Iptables port forwarding не сработва
Публикувано от: VladSun в Jun 22, 2007, 20:17
Скриптът е даден в общия случай (това за забележката за FORWARD, защщото не зная -P политиката на FORWARD в *моя* скрипт) - прав си за SNAT-a, но така съм свикнал - всичко да е ескплицитно зададено.
Титла: Iptables port forwarding не сработва
Публикувано от: Dean79 в Jun 29, 2007, 17:48
Примерен код | echo "1" > /proc/sys/net/*/ip_forward iptables -A PREROUTING -i xxx.xxx.xxx.xxx -p tcp --dport 8080 -j DNAT --to 192.168.1.102:80 |
То хувабо си се объркал с -t nat , ама и така като гледам -i xxx.xxx.xxx.xxx не ми изглежда наред. Поправете ме, ама -i не се ли ползваше за интерфейс ??
Титла: Iptables port forwarding не сработва
Публикувано от: neter в Jun 29, 2007, 19:59
Точно така. Никой няма да те поправя  -i interface (мрежови интерфейс, за който ще действа правилото) -s source (хост, от който идват пакетите) -d destination (хост, към който са насочени пакетите)
Титла: Iptables port forwarding не сработва
Публикувано от: teh в Jun 30, 2007, 22:30
Цитат | -i interface (мрежови интерфейс, за който ще действа правилото) |
С -i поставяш условие, че останалата част от правилото ще важи за пакети получени през описания интерфейс. Съответно с -o поставящ същото условие но за пакети излизащи през описания интерфейс.
Може би бъркаш -i опцията с еквивалента й при tcpdump и iptraf например.
|