Portál AbcLinuxu, 25. dubna 2024 18:03


Dotaz: Sdileni internetu

29.11.2005 17:49 bhe | blog: paseka
Sdileni internetu
Přečteno: 373×
Odpovědět | Admin
Cau, mam doma dva pocitace, ja mam dual boot linux s winXP, sestra jede na W98. Muj pocitac ma nastaveno sdileni pripojeni k internetu (ve WinXP), mam dve sitovky, takze na internet muzeme oba. Ja ale cim dal casteji bootuji do linuxu, nejem kvuli skolnim projektum. Rad bych teda zprovoznil sdileni internetu i v linuxu, ale tohle neni moje silna parketa, tak se ptam, jestli nekdo nevi jak to v linuxu nastavit tak, aby se na druhem pocitaci nemuselo nic menit a fungoval tam internet nezavisle na tom jestli jsem ve woknech nebo v linuxu. Vypada to ze, windows to nastavily tak, ze muj pocitac je DHCP server a druhy pocitac pak pres DHCP zjisti vse potrebne....ted jen jak takove chovani nastavit v linuxu...

Diky za pripadne odpovedi.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.11.2005 18:09 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Sdileni internetu
Odpovědět | | Sbalit | Link | Blokovat | Admin
V nejjednodušším provedení budeš potřebovat dvě věci - DHCP server a maškarádu. IP adresu vnitřní síťovky nastav na 192.168.3.1/24 DHCP server se konfiguruje prostřednictvím souboru
/etc/dhcpd.conf
jehož obsah může vypadat například takto:
ddns-update-style ad-hoc;
option broadcast-address 192.168.3.255;
use-host-decl-names on;
default-lease-time 1800;
max-lease-time 1800;

subnet 192.168.3.0 netmask 255.255.255.192 {
    range 192.168.3.2  192.168.3.62;
    option routers 192.168.3.1;
    option domain-name-servers 213.46.172.36, 213.46.172.37;
}

Maškarádu lze nahodit třeba tímto skriptem:
#! /bin/sh

EXTERNAL_INTERFACE="eth0"
INTERNAL_NETWORK="192.168.3.0/24"
ANYWHERE="0.0.0.0/0"                    # Match any IP address
UNPRIVPORTS="1024:65535"                # Unprivileged Port Range

EXTERNAL_IP=$(ifconfig $EXTERNAL_INTERFACE | grep 'inet addr:' | perl -pe 's/^\s*inet addr:(\S+).*$/\1/')
echo "external IP address is $EXTERNAL_IP"
echo 1 > /proc/sys/net/ipv4/ip_forward

#flush all rules
iptables -F
iptables -t nat -F

#Policy
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#define masquerade
iptables -t nat -A POSTROUTING -s $INTERNAL_NETWORK -d ! $INTERNAL_NETWORK -j SNAT --to $EXTERNAL_IP


 #
 # FTP (20, 21) - Allowing outgoing client access to remote FTP servers
 #

     # Outgoing request

     iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP -m state --state ESTABLISHED,RELATED \
 --sport 21 --dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

     iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p TCP -m state --state NEW,ESTABLISHED \
 --sport $UNPRIVPORTS --dport 21 -s $EXTERNAL_IP -d $ANYWHERE -j ACCEPT

     # Normal Port mode FTP data channels

     iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP -m state --state NEW \
 --sport 20 --dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

     iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p TCP -m state --state ESTABLISHED,RELATED \
 --sport $UNPRIVPORTS --dport 20 -s $EXTERNAL_IP -d $ANYWHERE -j ACCEPT

     # Passive mode FTP data channels

     iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP -m state --state ESTABLISHED,RELATED \
 --sport $UNPRIVPORTS --dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

     iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p TCP -m state --state NEW,ESTABLISHED \
 --sport $UNPRIVPORTS --dport $UNPRIVPORTS -s $EXTERNAL_IP -d $ANYWHERE -j ACCEPT

        iptables -A FORWARD -p TCP -s $INTERNAL_NETWORK --sport $UNPRIVPORTS --dport 20:21 -j ACCEPT
        iptables -A FORWARD -p TCP -d $INTERNAL_NETWORK --sport 20:21 --dport $UNPRIVPORTS -j ACCEPT
        iptables -A FORWARD -p TCP -s $INTERNAL_NETWORK --sport $UNPRIVPORTS --dport $UNPRIVPORTS -j ACCEPT
        iptables -A FORWARD -p TCP -d $INTERNAL_NETWORK --sport $UNPRIVPORTS --dport $UNPRIVPORTS -j ACCEPT

29.11.2005 22:40 mcm | skóre: 13 | blog: linca | domažlice
Rozbalit Rozbalit vše Re: Sdileni internetu
ahoj, tak tohle je pomerne pekne komplexne pojaty navod.
ja jsem nedavno resil stejny problem a z toho duvodu jsem si vytvoril (sam pro sebe pro pripadne pouziti nekdy v budoucnu, abych nemusel znovu zjistovat detaily) navod, ktery ti sem asi rovnou hodim, ne? ;-)

Konfigurace se sklada z nekolika dilcich kroku:

(Poznamka: navod urcen pro RedHat Like distribuce (Red Hat, Suse, Mandrake, ...), protoze nektere konfiguracni soubory, jejichz uprava je zde popisovana jsou soucasti prave distribuci vychazejicich z Red Hat.)

  1. konfigurace serveru
  2. konfigurace klienta

1. Konfigurace serveru:

Konfigurace pocitace, ktery bude sdilet pripojeni k inetu ostatnim pocitacum:

eth0 192.168.2.102/255.255.255.0 - IP teto sitove karte prideluje router s IP 192.168.2.1, kde bezi DNS a DHCP.
V mem pripade se jedna o router Barricade firmy SMC, tedy zadny dalsi pocitac. Zde bych jeste doplnil, pokud mas pocitac, ktery je primo pripojen k internetu, bude vhodny rozchodit DHCP a v tom lepsim pripade jeste DNS, ale to popisuje predchozi navod a taky nebude nutny konfigurovat nektery veci, ktery jsem resil ja.

eth1 192.168.3.3/255.255.255.0 - definovano staticky pomoci napriklad ifconfig nebo v souboru /etc/sysconfig/network-scripts/ifcfg-eth1

Pro tuto podsit (eth1) je jmeno pocitace definovano jako server.neco.cz - viz dale u konfigurace klienta. Jmeno je definovano v souboru /etc/hosts. Na tuto sitovku se pripojuje klient (IP 192.168.3.4) se jmenem wsttn01.

Je nutno povolit predavani paketu:

'echo "1" > /proc/sys/net/ipv4/ip_forward'
    nebo v konfiguracnim souboru:
/etc/sysconfig/network
zmenou udaje FORWARD_IPV4=false na hodnotu yes.
    nebo v souboru:
/etc/sysctl.conf
Musime spravne nastavit routovaci tabulku:

(Poznamka: pri instalaci systemu je preddefinovana, je mozne ji upravit, je nutne ji ale doplnit.)

route add -host wsttn01 dev eth1
(Poznamka: Jmeno wsttn01 definuje pocitac, kteremu je sdileni k internetu umoznovano a je to zastupne jmeno IP 192.168.3.4 (v tomto prikladu). Tato vazba jmena na cislo je umoznena diky spravnemu nastaveni souboru /etc/hosts.

Timto krokem jsem priradil klientsky pocitac urcitemu sitovemu zarizeni pro predavani paketu.

route add default 192.168.2.1 dev eth0
(Poznamka: termin default zastupuje univerzalni cislo 0.0.0.0 a urcuje, ze cokoliv, co nebude vyhovovat ostatnim pravidlum ma byt smerovano na router (192.168.2.1).)

Timto krokem jsme definovali vychozi branu k pristupu na internet.
Tento radek je nutne doplnit pouze za predpokladu, ze neni v routovaci tabulce. Ale vzhledem k tomu, ze tento pocitac vyuziva pridelovani dynamicke IP adresy z DHCP serveru, coz je router 192.168.2.1, tak by melo toto pravidlo jiz soucasti routovaci tabulky byt jiz z doby instalace OS (u tebe to asi nebude nutny delat, musel by si mit stejny zapojeni jako ja).

Dalsim krokem je spravne nastaveni pravidel pro preklad adres pomoci NAT (viz predchozi prispevek, u me pouze jednoducha maskarada):

iptables -t nat -A PREROUTING -i eth0 -j ACCEPT -d 192.168.3.0/24
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.3.0/24
Tim by mela byt konfigurace pocitace (serveru) kompletni. Zminene prikazy je mozne umistit do skriptu, ktery je spousten pri startu OS (napriklad /etc/rc.d/rc.local) nebo vytvorit samostatny skript a spoustet ho manualne.

Poznamka: pro uplnost je zde vypis routovaci tabulky pred upravou: (route -n)

Destination Gateway     Genmask         Flag    Iface
192.168.3.0 0.0.0.0     255.255.255.0   U       eth1
192.168.2.0 0.0.0.0     255.255.255.0   U       eth0
127.0.0.0   0.0.0.0     255.0.0.0       U       lo
0.0.0.0     192.168.2.1 0.0.0.0         UG      eth0
a po uprave: (route -n)
Destination Gateway     Genmask         Flag    Iface
192.168.3.4 0.0.0.0     255.255.255.255 UH      eth1
192.168.3.0 0.0.0.0     255.255.255.0   U       eth1
192.168.2.0 0.0.0.0     255.255.255.0   U       eth0
127.0.0.0   0.0.0.0     255.0.0.0       U       lo
0.0.0.0     192.168.2.1 0.0.0.0         UG      eth0
Poznamka: nastaveni souboru /etc/hosts: (konkretni priklad)
127.0.0.1   localhost.localdomain   localhost
192.168.3.4 wsttn01.neco.cz         wsttn01
192.168.3.3 server.neco.cz          server

2. Konfigurace klienta:

Konfigurace pocitace, ktery nema moznost samostatneho pristupu k internetu a musi vyuzit jedineho pripojneho bodu pres pocitac server.neco.cz.

Pro nazornost je na klientskem pocitaci nainstalovan system Linux a MS Windows 98.

Pocitac ma pouze jednu sitovou kartu, jeji nastaveni musi byt identicke jak v Linuxu tak i ve Windows:

192.168.3.4/255.255.255.0 - adresa definovana manualne
wsttn01.neco.cz

Konfigurace windowsoveho klienta:

Ve vlastnostech Okolnich pocitacu je nutno ve vlastnostech protokolu TCP/IP na sitove karte, ktera je spojena se serverem nastavit spravne:

- adresu IP (v tomto pripade 192.168.3.4) a masku podsite (v tomto pripade 255.255.255.0)
- vychozi branu (v tomto pripade 192.168.3.3)
(Poznamka: vychozi brana je adresa sitoveho adapteru nejblizsiho dalsiho zarizeni v ceste k routeru, tedy v tomto pripade je to karta na vnitrni strane serveru.)
- konfigurace DNS (v tomto pripade 192.168.2.1 a hostitel: wsttn01 domena: neco.cz)

(Poznamka: server DNS je soucasti routeru (192.168.2.1)a neni konfigurovan na serveru, proto je nutne odkazovat router a ne server.
Za predpokladu, ze by byl server konfigurovan take jako DNS server, potom by na tomto miste byla adresa 192.168.3.3.

Po stlaceni tlacitek OK a nasledujicim restartu systemu by melo internetove pripojeni byt funkcni.

Konfigurace linuxoveho klienta:

Konfigurace neni tak zdlouhava jako konfigurace serveru, zde je dulezite pouze spravne nastavit routovaci tabulku a konfiguracni soubory
/etc/hosts,
/etc/hosts.deny a
/etc/hosts.allow,
kde se definuji nazvy pocitacu a povoleni pristupu (stejne jako u serveru).

Musime spravne nastavit routovaci tabulku:

Poznamka: pri instalaci systemu je preddefinovana, je mozne ji upravit, je nutne ji ale doplnit o:

route add -host server eth0
Timto krokem definujeme vychozi branu (192.168.3.3).
route add default gw server
Timto krokem se definuje pravidlo, ze cokoliv, co je odlisne od jinych pravidel, resp. od pravidel, ktera nejsou definovana, se pouzije brana 192.168.3.3. Tento krok musi byt zarazen, bez jeho zarazeni nebude internet na tomto pocitaci fungovat.
route add -host router* gw server
* router = 192.168.2.1

Tento krok definuje pristup k DNS serveru. Povinny neni, ale bez nej nebude fungovat preklad jmen a tudiz bude nutno potom pouzivat pro pristup na internet IP adresy jednotlivych serveru = vopruz.

Dalsi krok

route add localhost lo
Tento krok definuje loopback za predpokladu, ze neni standardne vytvoren. Jeho pritomnost neni nutna, ale je vhodna.

Tim by mela byt konfigurace pocitace (linuxoveho klienta) kompletni. Zminene prikazy je mozne umistit do skriptu, ktery je spousten pri startu OS (napriklad /etc/rc.d/rc.local) nebo vytvorit samostatny skript a spoustet ho manualne.

Poznamka: pro uplnost je zde vypis routovaci tabulky pred upravou: (route -n)

Destination Gateway     Genmask         Flag    Iface
192.168.3.0 0.0.0.0     255.255.255.0   U       eth0
127.0.0.1   0.0.0.0     255.0.0.0       UH      lo
a po uprave (route -n):
Destination Gateway     Genmask         Flag    Iface
192.168.3.3 0.0.0.0     255.255.255.255 UH      eth0
192.168.2.1 192.168.3.3 255.255.255.255 UGH     eth0
192.168.3.0 0.0.0.0     255.255.255.0   U       eth0
0.0.0.0     192.168.3.3 0.0.0.0         UG      eth0
127.0.0.1   0.0.0.0     255.0.0.0       UH      lo
Poznamka: nastaveni souboru /etc/hosts: (konkretni priklad)
127.0.0.1   localhost.localdomain   localhost
192.168.3.4 wsttn01.neco.cz              wsttn01
192.168.3.3 server.neco.cz               server
192.168.2.1 router                  router
Poznamka na zaver: pozor pri manualnim vytvareni podsiti na definici netmask u jednotlivych sitovych karet. Karty jsou standardne OS nastaveny na netmask 255.255.255.0, je vhodne tato nastaveni zachovat, protoze pri jejich zmene muze dojit k tomu, ze sitove spojeni mezi pocitaci nebude fungovat (osobne vyzkouseno :-( ).

29.11.2005 23:32 bhe | blog: paseka
Rozbalit Rozbalit vše Re: Sdileni internetu
diky vam obema!, je toho hodne, tak to necham na vikend, dam vedet jak jsem dopadl :p

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.