Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: spetrs 21 Března 2012, 21:13:25
-
Zdravím.
Snažím se nastavit iptables. Nedaří se, potřebuji poradit.
První PC je přes eth3 připojeno k ADSL routru a ten do internetu.
Další PC jsou přes switch připojeny k prvnímu PC na jeho eth2.
Pokud spustím maškarádu na prvním PC,
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.1.0/24 -j MASQUERADEtak se PC, stanice, dostanou bez problému na internet. Z toho usuzuji ze vše nutné jede.
Potřebuji však, aby bylo možno se dostat přes maškarádu nebo obdobné nastavení, jen na jednu adresu v internetu a zároveň abych si neodstavil ostatní servery, které jedou na prvním PC. Ideální pokud by to šlo nastavit jen pro jedno PC, které by se dostalo na server, který je na internetu.
Výpis bez zapnuté maškarády:
iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Pro příklad:
Server na internetu: 46.255.224.60
Server, první PC: eth2:192.168.1.1, eth3:10.10.10.1
vybrané PC které se má dostat na internet: 192.168.1.10
Jak by to mělo být, iptables...? Díky za pomoc.
-
Využijte src a dst v iptables ... něco jako
iptables -A FORWARD -p tcp --src 192.168.1.0/24 -j DROP
iptables -A FORWARD -p tcp --src 192.168.1.0/24 --dst 46.255.224.60 -j ACCEPT
iptables -A FORWARD -p tcp --src 192.168.1.10 -j ACCEPT
.
.
.
-
iptables -A FORWARD -p tcp --src 192.168.1.0/24 -j DROP
iptables -A FORWARD -p tcp --src 192.168.1.0/24 --dst 46.255.224.60 -j ACCEPT
iptables -A FORWARD -p tcp --src 192.168.1.10 -j ACCEPT
Nedával bych jako první zakazující pravidlo je lepší nejdříve povolit správné chování a jako poslední pravidlo zakazuje vše co nevyhovuje. Pravidla jsou brány sestupně a je aplikováno to co vyhoví. V tomto případě tedy vyhovují všechny s zdrojem 192.168.1.0/24 a jsou zahozeny. Další pravidlo už nemá pakety co by řešilo protože jsou zahozeny.
-
Upravil bych iptables následovně.
# zařízení musí mít přístup k DNS že ?
iptables -A FORWARD -i eth3 -m state --state ESTABLISHED,RELATED -j ACCEPT # (Navázáno neřešit)
# máš DNS na bráně nebo v internetu ? Jinak musíš povolit udp na DNS server pro 192.168.1.10
iptables -A FORWARD --src 192.168.1.10 --dst !46.255.224.60 -j DROP # Vše co splňuje tohle pravidlo bude zahozeno
iptables -A FORWARD --src 192.168.1.0/24 -j ACCEPT # ostatní povoleno
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.1.0/24 -j MASQUERADE
Tohle by mělo fungovat.
-
Když já jsem, Tomáši, nechtěl dávat přesný výstup, ale něco, co by tazatele navedlo k vlastní dedukci :)
-
No to jo, ale pravidla se zapisují tak jak vyhovují, tvůj postup je velmi zavadějící. Stejně si musí něco načíst.
-
Tak jsem použil pouze:
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.1.10 -d 46.255.224.60/24 -j MASQUERADEZdá seže to funguje. Ale nemám z toho dobrý dojem, jestli mi někde nezůstalo něco z předcházejícího zkoušení. Může výše uvedené splňovat mé požadavky, samo o sobě?
Když jsem zkoušel Vaše řešení iptables -A FORWARD.....
tak jsem to neviděl nikde zapsané, zkoušel jsem iptables -L a iptables -L -n -t nat. Jak to vilistuju, nebo se mi ty pravidla s forward neuložily?
-
Tohle je horší přístup (podle užití), když uživatel zadá www.seznam.cz na počítači 192.168.1.10 pakety poletí na 46.255.224.60 což je špatně ne ? navíc nedávej za ip 46.255.224.60 síť 24 protože pak pravidlo platí pro 46.255.224.0 - 255 což je opět špatně.
Při zápisu do FORWARD nenapsalo to chybu ? Píšu to jen z hlavy a tak tam může být překlep.
-
Doporučuju přečíst články na root.cz, jsou dobře napsané
http://www.root.cz/serialy/vse-o-iptables/
-
uživatel zadá www.seznam.cz na počítači 192.168.1.10 pakety poletí na 46.255.224.60
Hmmm, tak to jsem si neuvědomil.
Při zápisu do FORWARD nenapsalo to chybu ? Píšu to jen z hlavy a tak tam může být překlep.
Ne, nepsalo to chybu, zkoušel jsem i nějaké vlastní s FORWARD a chovalo se to stejně, pokud jsem napsal nějakou blbost tak to psalo chybu.
Doporučuju přečíst články na root.cz, jsou dobře napsané
Četl jsem je i jinde jsem hledal, v záložkách mám cca 20 odkazů, ale stejně nejsem schopen to dát dohromady.
-
sudo iptables -L -v -n
Ukáže pravidla v FORWARD INPUT OUTPUT bze překladu do DNS
-
Nak aspoň něco dělam dobře, používám
iptables -L -n
iptables -L -n -t nat
to -v nepřineslo nic nového.
Musím přijít nato proč se mi nic neukládá do FORWARD.
-
Přepínač -n ti ukáže čítače u pravidel -> tedy jestli přes to něco teče. Je divné že nic nevložíš do FORWARD, zkus jednoduchá pravidla.
-
Jsem z toho nemoudry, do forward nevlozim nic, do nat vlozim co potrebuju.
Nainstaloval jsem si Ubuntu na jednu starou plecku a tam to jede vse.
Kde hledat, proc nejde nastavit ten forward?