Portál AbcLinuxu, 27. dubna 2024 03:06


Dotaz: Nastavení NAT

14.3.2007 18:27 Fredy72 | skóre: 8
Nastavení NAT
Přečteno: 3826×
Odpovědět | Admin
Mám počítač, v něm tři ethernetové karty (zařízení eth0, eth1, eth2), na něm Gentoo a mám to zapojené jako jakýsi router, kdy do eth0 je připojen Internet a na eth1 a eth2 jsou napojené koncové domácí počítače. IP adresa pro eth0 se bere z DHCP a DHCP pak přiděluje IP adresy domácím počítačům. Dokázal jsem na tom podle různých návodů nastavit iptables tak, že všechny potřebné programy chodí jak mají, až na jeden! Tím jedním je linuxdc++, ale stejné je to s dc++ pro widle. Problém je v nastavení iptables na routeru, domácí počítače mají firewall v pořádku. Dokáži dc++ připojit na servery, ale nefunguje vyhledávání a někdy i spojení (podle různých nastavení iptables). Vypadá to, jako, že nějaká spojení nefungují jak mají. Jediné funkční nastavení iptables, kdy to jede je NAT 1:1, asi takto
iptables -t nat -A POSTROUTING -o eth0 -s IPdovnitr -j SNAT --to IPven
iptables -t nat -A PREROUTING  -d IPven -j DNAT --to IPdovnitr
IP jsou natvrdo, je vyřazen DHCP a je to zapojeno jen na eth0-eth2. Není to řešení, tím jen chci říct, že problém není nikde jinde, než v tom nastavení iptables na routeru.

Takže otázka zní, jak nastavit v iptables NAT tak, aby dc++ jelo plně. Takhle pro úplnost vypadá script, když dc++ funguje, jak má, jak jsem psal:
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
export LAN=eth2
export WAN=eth0
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.168 -j SNAT --to 10.109.239.73
iptables -t nat -A PREROUTING  -d 10.109.239.73 -j DNAT --to 192.168.0.168
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
/etc/init.d/iptables save
/etc/init.d/iptables restart
a v /etc/sysctl.conf je mj.:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_dynaddr = 1
a např. takhle to mám, kdy jede hodně, ale ne vyhledávání a některá spojení v dc++:
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
export LAN=eth2
export WAN=eth0
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
iptables -A INPUT -i ${WAN} -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
/etc/init.d/iptables save
/etc/init.d/iptables restart
a /etc/sysctl.conf je stejný jako výše.

Na rozchození eth1 jsem se ještě ani nedostal. Zkoušel jsem různé kombinace, ale nic se nedaří. Prostě jen potřebuju nakopnout, jak má vypadat NAT, aby všechny porty chodily jako při NAT 1:1, ale za podmínky přidělování přes DHCP a na více počítačů. Firewall si pak už nějak vyřeším.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.3.2007 18:58 lampa
Rozbalit Rozbalit vše Re: Nastavení NAT
Odpovědět | | Sbalit | Link | Blokovat | Admin
No predevsim nemuzes mit 2 sitovky v 1 segmentu. Takze si bud porif switch a nebo dej na druhou sitovku jiny segment. Napr: 192.168.0.0/24 eth1 a 192.168.1.0/24 pokud to tak mas, tak je to v poradku. co se tyce dc++, zkus preroutovat porty 6881 az 6889 primo na ty PC za routery. Nejak takto:
iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -j DNAT --to IP_WIN
14.3.2007 20:06 Fredy72 | skóre: 8
Rozbalit Rozbalit vše Re: Nastavení NAT
Tu druhou síťovku (eth1) zatím neřeším, zatím jde o to, zprůchodnit všechny porty přes NAT. To dc++ si spojení navazuje přes různé porty, asi tak, jak to mají lidi různě nastavený, aspoň mi to tak přijde na trafiku, protože tam lítaj různá čísla portů (snad v plném rozsahu). Možná jde nějak nastavit dc++ natvrdo na nějaký port, ale to dělat nechci. A nějak to jít musí, protože mám Internet od poskytovatele taky za NATem a přes ten jeho to projde v pohodě.
14.3.2007 20:35 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Nastavení NAT
Jednoduše musíš být aktivní a v DC++ si nastavíš nějakej port a ten potom musí poskytovatel proroutovat na tvůj router a na svém routeru ji přepošleš na lokální PC.

Viz: předchozí příklad.

iptables -t nat -A PREROUTING -p tcp --dport port_co_jsi_nastavil_v_DC++ -j DNAT --to IP_toho_stroje_s_DC++
14.3.2007 20:44 Fredy72 | skóre: 8
Rozbalit Rozbalit vše Re: Nastavení NAT
To jsem pochopil. Mně jde ale o to, udělat to bez toho nastavování portu v dc++, protože to tak musí také jít. Alespoň si to myslím, protože, když v dc++ žádný port nenastavím a připojím komp (s dc++) přímo na poskytovatele, tak není žádný problém. Když komp napojím přes router, na kterým mám NAT 1:1 bez DHCP, prostě natvrdo, jak jsem popsal, tak taky není žádný problém. Když ale povolím DHCP, tak to neumím nastavit v iptables, aby všechno procházelo tam i zpět, a jen se překládaly adresy. Pak nekteré porty nefungují v dc++.
14.3.2007 20:47 Fredy72 | skóre: 8
Rozbalit Rozbalit vše Re: Nastavení NAT
Na tvé řešení potřebuji mít na stroji pevnou IP toho stroje s dc++, což sice teď mám, ale používat to nechci, chci používat DHCP přidělní IP na lokální kompy.
14.3.2007 21:15 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Nastavení NAT
Tak si nastav DHCP aby přiřazovala příslušnému stroji stabilní IP bez toho to nejde.

Jak by ten tvůj router věděl na jakém stroji s jakou IP běží DC++ to se nedá zjistit.

Proč to funguje automaticky když to máš připojeno na modem providera je v tom že si DC zjistí port a IP sám podle toho co je nastavené na tom modemu, ovšem jak tam vrazíš další router tak to DC++ nezjistí.

Prostě tady není co řešit PC co má DC++ pokud chceš používat aktivní režim musí mět buď veřejnou IP nebo musí se tam ten port přesměrovat z veřejné IP a potom samozřejmě když DC++ nemá veřejnou IP nemůže zjistit jednoduše co jsi kde nastavil.
14.3.2007 21:38 Fredy72 | skóre: 8
Rozbalit Rozbalit vše Re: Nastavení NAT
Důvěřuji a snažím se pochopit, díky.

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.