Portál AbcLinuxu, 14. května 2025 00:38

Dotaz: Proč mi nefunguje PREROUTING?

8.1.2006 18:27 Martin H. | skóre: 27 | blog: linservis | Brno
Proč mi nefunguje PREROUTING?
Přečteno: 152×
Odpovědět | Admin
Na jednom počítači mi kamarád zprovoznil možnost, že po zadání adresy 1.2.3.4:81 se připojím na jiný stroj ve vnitřní síti, kde běží také Apache.
Zkusil jsem to i u sebe a použil následující příkaz:
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.1.2:80
Jen pro pořádek, eth0 směřuje do LAN a eth1 do WAN, NAT funguje bez problémů. Ale PREROUTING ani omylem. Kde může být ještě chyba? Už se na to snažím přijít nějakou dobu a nic mě už nenapadá. Mj, tenhle příklad mi na tom druhém stroji funguje. Na obou je stejný RedHat 9.
Díky za každou konstruktivní radu.
--- Kapitalismus je lepší, než socialismus ... ale horší, než jsem čekal. (Jiří Suchý) ---
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.1.2006 18:30 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zrada je v -t nat :-)
iptables -A PREROUTING -i eth1 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.1.2:80
8.1.2006 18:35 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Tohle vám tak akorát vyhodí chybu, protože v tabulce filter bude hledat chain PREROUTING marně…
8.1.2006 20:21 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Jasně jsem blbec :-) neuvědomil jsem si to.
8.1.2006 18:46 Martin H. | skóre: 27 | blog: linservis | Brno
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Zrada je v -t nat :-)
iptables -A PREROUTING -i eth1 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.1.2:80
No, takže jsem to zkusil ... a výsledek: Když odeberu -t nat, tak mu chybí místo, kam podmínku uložit. Nicméně, když se podívám do výpisu podmínek, je tam DNAT aktivní a stejně se nedá spojit s tím PC v síti ... když se ale připojím přes SSH na GATE a dám telnet 192.168.1.2 80, tak se mi Apache ozve, čili ve vnitřní síti jede. Jen z venkovní adresy nic ... někde musí být nějaká bota. :-(
--- Kapitalismus je lepší, než socialismus ... ale horší, než jsem čekal. (Jiří Suchý) ---
kouby avatar 8.1.2006 18:35 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nestaci pouze toto pravidlo. Musis take na routeru povolit port 81 a pak povolit forward. Napriklad:
iptables -A INPUT -p tcp --dport 81 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 81 -o eth0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 81 -j DNAT --to-destination 192.168.1.2:80
That's thirty minutes away. I'll be there in ten.
8.1.2006 18:36 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Pravidlo pro chain INPUT je zbytečné, protože tímto chainem ten paket vůbec nepůjde.
kouby avatar 8.1.2006 18:44 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Ano, mate pravdu to tam opravdu byt nemusi.
That's thirty minutes away. I'll be there in ten.
kouby avatar 8.1.2006 18:46 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
V poslednim pravidlu mi chybi prepinac -m tcp a povoleni portu 81 pomoci INPUTu byt nemusi.
That's thirty minutes away. I'll be there in ten.
8.1.2006 18:49 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
To '-m tcp' je zbytečné, protože '-p tcp' automaticky způsobí načtení odpovídajícího modulu.
9.1.2006 07:49 Martin H. | skóre: 27 | blog: linservis | Brno
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 81 -o eth0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 81 -j DNAT --to-destination 192.168.1.2:80
Tak jsem zkusil i tohle ... a nefunguje. Napadlo mě, s IPTABLES ještě zápasím, jak si někam uložit LOG pro pravidlo PREROUTING? Taky jsem to zkoušel nastavit, ale nějak to asi nejde.

Určitě to bude nějaká blbinka, jen nemůžu zjistit jaká. :-(
--- Kapitalismus je lepší, než socialismus ... ale horší, než jsem čekal. (Jiří Suchý) ---
9.1.2006 18:22 jirka
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Logování před DNAT:
iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 81 -j LOG --log-prefix="Log port 81: "
iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 81 -j DNAT --to-destination 192.168.1.2:80
PREROUTING je dříve než FORWARD. Povolení pro FORWARD na portu 80.
iptables -A FORWARD -d 192.168.1.2 -p tcp --dport 80 -o eth0 -j ACCEPT
11.1.2006 01:48 iptables
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co tohle:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 81 -j DNAT --to 192.168.1.2:80
11.1.2006 01:58 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste na onom stroji doporucuji vyzkouset tcpdumpem kudy a kam ten packet jde. Nejprve:

tcpdump -i eth0 port 81

a potom

tcpdump -i eth1 port 80

a samozrejme se pri tom zkouset pripojit na danou adresu. V obou pripacech by to melo ukazovat jak puvodni packety tak odpovedi.

Radek
11.1.2006 02:00 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: Proč mi nefunguje PREROUTING?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A jeste jednu vec bych doporucil. Pomoci

iptables -t nat -v -L PREROUTING

dostanete vypis, kde na zacatku kazdeho radku je pocet packetu a bajtu, ktere dane pravidlo zachytilo. Takze se tam nejprve kouknete, zda to pravidlo opravdu zachytava packety spravne :)

Radek

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.