Portál AbcLinuxu, 19. dubna 2024 06:14


Dotaz: Server za NATem s RDR, proč packety mění cílový port?

12.6.2006 16:45 Elfman | skóre: 7 | blog: Poprvé v Linuxu | Vamberk
Server za NATem s RDR, proč packety mění cílový port?
Přečteno: 108×
Odpovědět | Admin
Dobrý den,

měl bych jeden dotaz ohledně serveru za NATem (řeším několik problémů týkající se této věci současně, takže kdybyste na nějakém dalším fóru narazili na podobný dotaz, tak mne prosím díky netiketě neukamenujte)

Snažím se udělat si databázový program na systému klient-server, který běží na počítači s Linuxem. Klienti z lokální sítě na něj mohou normálně připojit. Dejme tomu, že server má na vnitřní síťové kartě adresu 192.168.2.1 a naslouchá na portu 12345.

Chtěl bych ale, aby bylo možné se připojit i z Internetu. Na serveru běží NAT, ovšem jak server, tak stanice mohou na Internet, e-mail, FTP, atd. v pohodě.

Na vnější straně serveru je síťová karta s adresou 192.168.1.2, která je spojena s modemem na adrese 192.168.1.1, který má veřejnou adresu 1.2.3.4.

Na firewallu na serveru jsem si napsal pravidlo, aby požadavky na INPUT na adresu 192.168.1.2 a port 12345 byly akceptovány.

Na modemu běží filtr, kde mám povoleno akceptovat packety určené pro adresu 1.2.3.4 a port 12345 TCP.

Zároveň tam běží i NAT. Tam je pravidlo pro výstup, a tak jsem si tam přidal pravidlo pro vstup RDR, které vypadá takto:

Local Address: 192.168.1.2 (from/to)

Global Address: 1.2.3.4 (from/to)

Dest Port: 12345 (from/to)

Local port: 12345

Na modemu běží router i bridge, v routovací tabulce je záznam:

1.2.3.4 na 127.0.0.1

A teď, v čem mám problém:

- když zadám veřejnou adresu z LAN, tak packety podle IPTABLES -L -v -x dorazí z INPUT eth0 (vnější síťová karta) se zdrojovým portem 12345 (na tom je také otevřený i klient). Ovšem cílový port je pokaždé jiný (měl by být tak 12345). Takže packety sice přijdou, ale nespojí se, protože server nemůže naslouchat na 64K portech současně :-)

- když spustím klienta úplně mimo síť (někde ve WAN), tak mi nepřijde vůbec žádný packet.

Stejný výsledek jsem měl, když jsem na modemu měl routování adresy 1.2.3.4 na 192.168.1.2, a tehdy se zapisovaly i packety do statistik. Teď se už nezapisují, ale stále přicházejí (já tedy doufám, že i ty z LAN jdou nejprve ven za modem na nějakou bránu ISP, a pak teprve zpět na modem a server).

Stejný výsledek je i tehdy, když na firewallu dám všechno na ACCEPT, takže si nejsem jistý, zda je chyba na modemu nebo na Linuxu...

Není mi jasné, proč se u packetů mění zrovna cílový port. U normálního NATu by se přeci měl měnit zdrojový (a ten podle pravidel je 12345), ale tady se mění cílový a zcela náhodně, což je funkční nesmysl (leda by to dělaly nějak ty dva NATy, ale nevím jak).

Kdybyste někdo věděl, v čem by to mohlo být, budu vděčný.

Předem díky
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.6.2006 10:39 Elfman | skóre: 7 | blog: Poprvé v Linuxu | Vamberk
Rozbalit Rozbalit vše Re: Server za NATem s RDR, proč packety mění cílový port?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebo se pro začátek zeptám jinak:

Jak mám nastavit ADSL modem, aby směrovoval požadavky na veřejnou adresu ne na sebe, ale na počítač za ním?

Jde mi hlavně o RDR a filtr.

Pokud mi to někdo napíšete, tak budu moci vyloučit chybu v nastavení modemu a budu se moci přesunout na Linux.

Potřebuji totiž, aby chodilo toto:

1) spojení LAN -> SERVER

2) spojení LAN -> veřejná IP

3) spojení Internet -> veřejná IP

1 funguje OK, ve 2 mi přicházejí packety se změněným cílovým portem, ve 3 mi nechodí nic.

Packety v trase 2 si modem započte, pokud je povolím v příchozích pravidlech pro daný port a danou veřejnou IP adresu a všechny IF. Pokud IF omezním na ppp0, což by mělo být rozhraní modemu, tak si nezapočte nic. A ačkoliv je implicintně všechen provoz WAN->LAN zakázán, tak přesto firewall v Linuxu obdrží packety s daným zdrojovým portem (ale náhodným cílovým). Přesto, že jsou ve filtru tedy packety zakázané, a RDR pravidlo NATu mi tvrdí, že žádné packety nepřišly, na server přišly packety z vnější síťové karty na jeho vnější lokální IP adresu (kdo je tam nasměroval?).

Dělal jsem to přesně podle asi 5 knížek a manuálů, a přesto mi není jasné, co se tady vlastně děje.
13.6.2006 13:38 Elfman | skóre: 7 | blog: Poprvé v Linuxu | Vamberk
Rozbalit Rozbalit vše Re: Server za NATem s RDR, proč packety mění cílový port?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem si udělal ještě jeden test, který možná těm zkušenějším z Vás pomůže, ale já jsem stále zmaten:

stanice: telnet 1.2.3.4 12345

Linux: ip route default via 192.168.1.1 (na modem)

Linux: iptables FORWARD dest 12345 int -> ext ACCEPT 3 packets

Linux: NAT POSTROUTING NAT

Modem: filtr incoming 1.2.3.4 12345 ACCEPT 3 packets

Modem: RDR dest 1.2.3.4 12345 lok: 192.168.1.2 12345 > 0 packets (!!!)

Linux: iptables INPUT dest 192.168.1.2 12345 > 0 packets (???)

Linux: iptables INPUT dest 192.168.1.2 src(!) 12345 > 3 packets (!!!)

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.