iptables - legegyszerubb atiranyitas

Fórumok

Udv!

A leheto legegyszerubb kerdesem lenne, de nem tudok rajonni, hogy mit rontok el, pedig mar szazszor csinaltam ilyet.

Van egy gep (B), es a bejovo 80- as forgalmat szeretnem tovabbiranyitani (C) gepre.

Parameterek:
(B): 172.21.34.160 , eth0
(C): 172.21.35.43 , eth0
(A): 172.21.39.89 , eth0

Teljesen ures a tabla kezdetben, (A) geprol telnetelni tudok (B) es (C) 80- as portjara.

Utana felveszem ezt a 2 szabalyt:


iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 172.21.35.43:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth0 -j ACCEPT

, es utana telnet 172.21.34.160 80- ra csak annyit kapok, hogy

Trying 172.21.35.160...

Majd egy ido utan

telnet: Unable to connect to remote host: Connection timed out

tcpflow- val nezegetve egyik gepen sem kapok semmit sem az adott porton.

Utoljara ez alapjan probaltam.

Valaki tudna segiteni? Hol a hiba?

A 2 szabaly utan:


 iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:www 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         



iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             anywhere            tcp dpt:www to:172.21.35.43:80 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

.

Koszi.

Hozzászólások

Miért pont a 80-as port tetszett meg?

probalnam: echo 1 > /proc/sys/net/ipv4/ip_forward

Neked nem az iptables kell, hanem egy picike tcp proxy. A te esetedben (jobb esetben) jön egy kérés a B-re 80-as portra A-ról. B átlőki C-nek DNAT-tal. C Válaszol A-nak, aki le se szarja, mert ő B-től várja a választ.
--
ez ugye csak valami vicc

Ja, és visszafelé mennek a csomagok, pl. B->A

Na, most kezdem nem erteni, de nagyon.

Otthoni gepen siman megy minden, bar en mar azon is kiakadtam, hogy ahol vagyok, a netcat azt szereti, ha nc -l portnumber- rel hivom, otthon meg azt, ha nc -l -p portnumber- rel... .

Nálam így működik:


iptables -t nat -A PREROUTING --dst 172.21.34.160 -p tcp --dport 80 -j DNAT --to-destination 172.21.35.43:80
iptables -t nat -A POSTROUTING --dst 172.21.35.43 -p tcp --dport 80 -j SNAT --to-source 172.21.34.160
iptables -A FORWARD -d 172.21.35.43 -p tcp --dport 80 -j ACCEPT

De próbáld ki a Varnish proxyt, az talán célravezetőbb!

Ez mukodik. A legfurabb az, hogy otthoni rendszeren a postroute- s sor nelkul mukodik. No mindegy.

Halas koszonetem.

Amugy ugye nem tevedek nagyot, hogy ez csak a kintrol jovo csomagokat kapja, amikor localhostra mennek, azokat nem? Ha felvennem ugyanezt a ket szabalyt

-i lo

- val, ez megoldodna?

Koszi megegyszer.

Up.

A fenti problema ugyan megoldva, de most belefutottam egy ilyen problemaba:


ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0D:56:C0:CC:56  
          inet addr:172.21.51.126  Bcast:172.21.51.255  Mask:255.255.255.0
          inet6 addr: fe80::20d:56ff:fec0:cc56/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:442625494 errors:0 dropped:0 overruns:0 frame:0
          TX packets:307280004 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:279585350 (266.6 MiB)  TX bytes:1051774415 (1003.0 MiB)
          Base address:0xecc0 Memory:fe5e0000-fe600000 

eth0:1    Link encap:Ethernet  HWaddr 00:0D:56:C0:CC:56  
          inet addr:172.21.51.145  Bcast:172.21.51.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Base address:0xecc0 Memory:fe5e0000-fe600000 

.

A fenti szamok(IP- cimek) nyilvan nem alljak meg a helyuket, de mondjuk az ide beerkezo dolgokat (eleg az eth0:1- re) szeretnem atiranyitani mondjuk a 172.21.100.100- ra.

Probalkoztam par dologgal, de nem igazan ment. Az utolso ez:


iptables -t nat -A PREROUTING --dst 172.21.51.145 -i eth0:1 -p tcp --dport 11223 -j DNAT --to-destination 10.220.199.206:11223
iptables -t nat -A POSTROUTING --dst 10.220.199.206 -o eth0:1 -p tcp --dport 11223 -j SNAT --to-source 172.21.51.145
iptables -t nat -A PREROUTING --dst 172.21.51.126 -i eth0 -p tcp --dport 11223 -j DNAT --to-destination 10.220.199.206:11223
iptables -t nat -A POSTROUTING --dst 10.220.199.206 -o eth0 -p tcp --dport 11223 -j SNAT --to-source 172.21.51.126

.

Varok minden otletet, mert igazabol kifogytam, mindig a

172.21.51.[126,145]

- os gepre jon letre a kapcsolat az adott porton a

172.21.100.100

helyett.

Nincs eth0:1 interfész, csak eth0 van. Az alias nem interfész.

"szeretnem atiranyitani mondjuk a 172.21.100.100- ra."
Akkor a szabályok között miért nem szerepel sehol ez az IP? A fentiek ennek megfelelően teljesen rosszak. Routing előtt megváltozattod a cél IP-t, mivel azt akarjuk, hogy máshová menjen. Ennyi. Feltétele, hogy a 172.21.100.100 (default) route-ja efelé a gép felé mutasson. Ha mégsem így lenne, akkor kell az, hogy routing után megváltoztatod a forrás IP-t is a gateway abba a hálózatba tartozó címére, hogy vissza is találjon a válaszcsomag.

iptables -t nat -A PREROUTING -i eth0 -d 172.21.51.145 -p tcp --dport 11223 -j DNAT --to-destination 172.21.100.100:11223

Megvédeném a netfilter használatát. Felesleges külön processzt futtatni egy olyan feladat végett, amit a kernel önmagában is meg tud oldani. A rinetd ilyen használata két iptables sorral egyenértékű, ráadásul a megfelelő modulok alkalmazása mellett nincs összetett protokollokra vonatkozó korlátozása (lásd FTP). Ugyanakkor a kérdés nem arra vonatkozott - bár elment ilyen irányba is -, hogy a szerver a klienst a tűzfal címével lássa, hanem csak egy szimpla portátirányításról, ez pedig egy iptables paranccsal kezelhető.

Ott a pont.

Amiért ide biggyesztettem az talán az idő... Ha pl. nagyon hirtelen kell a megoldás ezzel időt nyerek.

echo xxx.xxx.xxx.xxx 80 xxx.xxx.xxx.xxx.80 >>/etc/rinetd.conf
/etc/init.d/rinetd restart

Ezután már nyugodtan ráérek egy másik gépen szimulálni a problémát és megoldani.
Magam is iptables-t használok!

Nem akarok beleszólni, de ezt írod:

, es utana telnet 172.21.34.160 80- ra csak annyit kapok, hogy
Trying 172.21.35.160...

Ez elírás, vagy tényleg "benézted"??? :D

--
Debian Linux rulez... :D