prerouting

Fórumok

adott egy gép, két hálókarival.

eth1 - külső IP (77.xx.xx.xx)
eth2 - belső IP (192.xx.xx.xx)

átirányítás lenne:
-----------
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD ACCEPT
iptables -F FORWARD

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -i eth1 -j DNAT --to-destination 192.xx.xx.xx:8080
-----------
Azonban nem muxik!

De ha egy harmadik hálózatba irányítom, akkor megy.

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -i eth1 -j DNAT --to-destination 88.xx.xx.xx:8080

A default gw: 77.xx.xx.yy

Mit hagytam figyelmen kívül?

Hozzászólások

postrouting-ba egy masquerade vagy snat

bocsanat, igen, az me'g akartam irni hogy a dnat szabalyban is legyen src/dst alapjan szelekcio. azaz a nat tablaban valami ilyesmi:


-A PREROUTING -s ! 192.168.111.0/255.255.255.0 -d 77.88.99.11 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.111.222:8080
-A POSTROUTING -s 192.168.111.0/255.255.255.0 ! -d 192.168.111.0/255.255.255.0 -j MASQUERADE

de a legtisztabb, szerintem, ha egyreszt ide egy `iptables-save` kimenetet masolsz be masreszt te is egy `iptables-restore`-val alakitod ki a szabalyaidat es nem `iptables` egyesevel vett hasznalataval.

16:06:15.282283 IP 89.132.193.xx.64691 > 77.xx.xx.xx.80: S 3066131633:3066131633(0) win 16384
16:06:15.282695 IP 77.xx.xx.xx.80> 89.132.193.xx.64691: R 0:0(0) ack 3066131634 win 0

16:06:21.821274 IP 89.132.193.xx.64691 > 77.xx.xx.xx.80: S 3066131633:3066131633(0) win 16384
16:06:21.821459 IP 77.xx.xx.xx.80 > 89.132.193.xx.64691: R 0:0(0) ack 1 win 0

Reset, Ack-ot ad vissza, néghozzá a publikus IP-ről.

"eth2 - belső IP (192.xx.xx.xx)"
"iptables -t nat -A PREROUTING -p tcp --destination-port 80 -i eth1 -j DNAT --to-destination 192.xx.xx.xx:8080"
Tehát a TCP/8080 ugyanezen a gépen van, mint ahova ezt a szabályt beírtad?

Ha igen, akkor ez így elég lenne, amennyiben tényleg van a 8080-on valami.
Ha nem, és másik gép, akkor kérdés, hogy azon a gépen a default route merre mutat, valamint nincs-e ott szűrve tűzfallal, és hallgat-e a 8080-as porton.

Egy-egy tcpdump ilyenkor sokat segíthet.

"az eth1-re bejön ugyan a kérés, de mintha nem továbbítaná az eth2-es hálózat felé."
Na jó, akkor menjünk sorba! Konkrét kérdések:

Ezen a két hálózati kártyás gépen (ahol 192.xx.xx.xx a speciális eszköz címe):

  ping -I eth1 -c 5 192.xx.xx.xx
  telnet -b 77.xx.xx.xx 192.xx.xx.xx 8080
  iptables -nvL FORWARD; iptables -t nat -nvL
  tcpdump -i eth2 -nvvvs 0 host 192.xx.xx.xx
  ifconfig eth2

vagy

ip addr show eth2

A tcpdump közben kívülről próba. A ping és telnet közben is lehet tcpdumpolni,

"nem tudok log-ot nezni, mert speciális eszköz"
De a hálózati beállításait minden bizonnyal meg tudod nézni. Mi az IP, maszk és a default gateway?

A speciális gép a 192.168.10.53 (egy másik gép) és a "kéthálókaris gép" eth2 IP címe 192.168.10.1

eth2 Link encap:Ethernet HWaddr 00:02:44:AD:xx:xx
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0

ping -I eth1 192.168.10.53........nem megy
ping -I eth2 192.168.10.53........megy
telnet -b 77.xx.xx.xx 192.168.10.53 8080.......nem megy
telnet 192.168.10.53 8080.......megy

tcpdump -i eth2 -nvvvs 0 host 192.xx.xx.xx esetre semmi sem jelenik meg "kívülről próbakor".

Jelenlegi szabály:

-A PREROUTING -s ! 192.168.10.0/255.255.255.0 -d 77.xx.xx.xx -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.53:8080
-A POSTROUTING -s 192.168.10.0/255.255.255.0 ! -d 192.168.10.0/255.255.255.0 -j MASQUERADE

Mivel a 77.x.x.x gép is egy "belső gép" publikus IP-vel, emiatt egy tűzfal van még előtte, ez a 77.y.x.x, ezen a gépen a FORWARD szabályon van átengedve a 77.x.x.x IP-hez a 80-as port.

telnet -b 77.xx.xx.xx 192.168.10.53 8080.......nem megy
telnet 192.168.10.53 8080.......megy

Ez lesz a gond.
Most vagy nem ide mutat a .10.53-n a default router, azaz ha a 77-es címedről próbálsz bejutni rá, akkor máshova küldi a válasz csomagokat, vagy van rajta tűzfal, és eleve be sem enged másik forráscímről, vagy a harmadik eset lehetne, ha a két hálókártyás gépeden lenne valami tűzfalazás (ami nem engedi vissza a válaszokat a .10.53-ról - de ezt korábban írtad, hogy most minden tűzfalszabály ACCEPT ezen a gépen).

Tehát az első kettő opció valamelyike van. Azaz vagy tűzfal/security beállítások miatt csak a 192.168.10.x-es hálózatról tudod megnézni a .10.53-at, vagy a default routere valahova máshova mutat.

Mind a két problémán lehet segíteni azzal, ha egy

-A POSTROUTING ! -s 192.168.10.0/255.255.255.0 -d 192.168.10.53 -j MASQUERADE

szabályt is beraksz, igaz, innentől kezdve a .10.53-n nem fogod látni, hogy ki nézegeti őt távolról, mert a két hálókártyás gép IP címével fog rajta megjelenni az összes kliens.