Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: mihailmilev в Jun 20, 2007, 19:57



Титла: 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
Тези мисля, че ще ти свършат идеална работа:
http://www.hackorama.com/network/portfwd.shtml
http://www.socialhacker.com/howtos/port_forwarding.php.


Титла: 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, мерси много, това реши проблема! Имаш една бира от мен  :p


Титла: 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 например.