iptables port forwarding

Fórumok

Üdv!

Egy kis problémám akadt a port forwardingal. Valahogy sehogysem akar összejönni. Fix ip-című külső hállókártyáról akarom a 80as portot átirányítani egy belső hálózaton lévő gépre. Ha csak ennyit írok bele a tüzfal scriptbe, akkor sem megy:

echo "1" > /proc/sys/net/ipv4/ip_forward
itpables -F
iptables -X
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -s $kulsoip -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i $kulsoif -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80

Tudtok segíteni, mi lehet a hiba?
előre is köszönöm.

Hozzászólások

Két probléma is van a szkripttel:

1. FORWARD láncban forrás címnek ne a külső IP-t add meg, hanem inkább szűrj célként a belső gépre (-d 192.168.1.1), ha már mindenképpen filterezni akarod a FORWARD láncot.

2. A válaszcsomagok ha ki is jutnak a külső hálóra (remélhetőleg ez a gép az alapértelmezett átjáró), nem igazán érnek sokat odakint egy 192.168.1.1-es forráscímmel. Csinálj kifele is címfordítást, legegyszerűbben így:

iptables -t nat -A POSTROUTING -o $kulsoif -j SNAT --to $kulsoip

Ha dinamikusan változik a külső IP, akkor meg

iptables -t nat -A POSTROUTING -o $kulsoif -j MASQUERADE

A port átirányítás így már megy, köszönöm.
Viszont akadt másik 2 probléma:

1: alhálózatról az ftp kifele csak passzív módban hajlandó müködni ( total commanderben próbálva )
2: az átjáró ftp portja át lett irányítva belső gép ftp portjára. megoldható e az hogy ha az alhálózaton lévő számítógépen az átjáró külső ip címét írom be ftp kapcsolatnak, az át legyen irányítva a belső gépre? Közben az is számít hogy a belső hálózatról továbra is lehesen ftp-zni kifelé....

az iptables -A PREROUTING -i $belsoif -d $kulsoip -p tcp --dport $fw_port -j DNAT --to-destination $fw_ip:$fw_port_to parancs hatására nem történik semmi.

Jelenlegi tüzfal szabály, amivel próbálom belőni az átirányítást:
### alaphelyzetbe mindent ###
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -X
iptables -Z

echo "1"> /proc/sys/net/ipv4/ip_forward

### INPUT ###
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s $belsonet -j ACCEPT
iptables -A INPUT -j DROP

### OUTPUT ###
iptables -A OUTPUT -j ACCEPT

### FORWARD ###
iptables -A FORWARD -s $belsonet -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp --dport $fw_port -d $fw_ip -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP

### port-fw, nat ###
iptables -t nat -A PREROUTING -i $kulsoif -p tcp --dport $fw_port -j DNAT --to-destination $fw_ip:$fw_port_to
iptables -t nat -A POSTROUTING -o $kulsoif -j SNAT --to $kulsoip

echo "----- TÜZFAL KÉSZ -----"

Kicsit egyszerüsítem a második problémát:
a belső hálló kártya 21es és 80as portjára érkező kéréseket szeretném átirányítani egy másik gépre az alhálózaton, abban az esetben ha a cél cím a külső hállókártya ip címe.

erre próbáltam a következő parancsot:
iptables -t nat -A PREROUTING -i $belsoif -p tcp -d $kulsoip --dport 21 -j DNAT -to-destination $másikgép

a szerver mint gateway jól müködik, kintről a port átirányitás is megy. mi lehet a probléma?

próbáltam úgyis a fenti parancsot hogy a -d kapcsolot kihagyva, kulső hálókártyát leállítottam, minden láncban ACCEPT, és nem volt eredmény. Kezdem feladni....

a második kérdésemre is megtaláltam a megoldást:
belső hálózat esetén nem a prerouting/dnat hanem a postrouting/snat szabály kell:

$IPTABLES -t nat -A POSTROUTING -d $fw_ip -s $belsonet -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j SNAT --to $belsoip

részemről téma lezárva. Aki segített annak köszönöm
bye

Kicsit felhozom a témát, mivel beleütköztem egy érdekes forward problémába. Adott egy szerver a neten, rajta egy vpn (éppen pptp), ehhez csatlakozik (neten keresztül) egy kliens. A feladat az lenne, hogy a szerveren keresztül kellene megnyitni egy portot a net felől a vpn-es kliens-nek, hogy vmilyen szolgáltatást el lehessen rajta érni a kintről. Tehát ha valaki csatlakozik netről a szerver_ipje:12345 címen és porton, akkor a kérés forwardolódjon a vpn-es kliens ip-jére és valamilyen portjára. A dologban odáig el is jutok, hogy a külső kérés elmegy a kliens felé (tcpdump szépen mutatja), de válasz már semmi nem érkezik. Ha a szerverről próbálom közvetlenül a vpn-en át a klienset megszólítani, az szépen megy, de netről nem. Valakinek van ötlete, hogy mi lehet a probléma, miért nem válaszol a kliens a forwardolt kérésre?

Sziasztok!

Szeretném a segítségeteket kérni az iptables kapcsán, hogy milyen szabállyal tudnám megoldani, azt, hogy a kintről érkező udp 4000-töl 4500-ig terjedő kéréseket átengedje, egy a tűzfal mögötti gépnek a 4000-töl 4500-ig terjedő udp portjára.

Segítségeteket, előre is köszönöm!

üdv,
Dodder