Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Udostępnianie połączenia internetowego z Linux na Windows

Mery84 23 Sty 2009 19:50 12223 0
  • #1 23 Sty 2009 19:50
    Mery84
    VIP Zasłużony dla elektroda

    Jesteśmy w następującej sieci domowej:
    Udostępnianie połączenia internetowego z Linux na Windows

    Według tego prostego schematu interfejs eth0 jest połączeniem z internetem, a maszyna PC1 to komputer z Linuksem.
    Interfejs eth1 jest połączeniem lokalnym między PC1 i PC2.
    PC2 jest komputerem z zainstalowanym Windows (wersja dowolna)
    Identyczną sytuację można zbudować na interfejsach radiowych czy nawet w warunkach mieszanych połączeń LAN i wifi. Wszystko wymaga od was odpowiedniej konfiguracji i wiedzy, który interfejs dostarcza internet, a który jest połączeniem z drugą maszyną.
    Jeśli będzie to połączenie radiowe to interfejsy będą się nazywać wlan0, wlan1.

    Konfiguracja interfejsów sieciowych

    Edytor tekstu wybierzcie według waszych upodobań lub tego co macie w systemie. Gnome ma gedit, KDE ma kate, nano mają wszyscy ;). Ja posługuję się kate więc jeśli używasz innego edytora to zamiast kate wpisuj jego nazwę.
    Otwieramy plik konfiguracji

    Code:
    sudo kate /etc/network/interfaces


    Wariant pierwszy - twój internet jest konfigurowany przez DHCP.
    Wtedy twój plik powinien wyglądać podobnie do tego:
    Code:
    auto lo
    
    iface lo inet loopback

    auto eth0
    iface eth0 inet dhcp

    auto eth1
    iface eth1 inet static
            address 192.168.0.1
            netmask 255.255.255.0


    Konfiguracja dla eth0 jest pobierana z DHCP sieci, eth1 ma statyczny adres IP 192.168.0.1 i maskę 255.255.255.0. To wartości uniwersalne w każdym domowym połączeniu sieciowym.

    Wariant 2
    Masz statyczne adresy konfiguracji sieci:
    Code:

    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet static
           address xxx.xxx.xxx.xxx
           netmask xxx.xxx.xxx.xxx
           network xxx.xxx.xxx.xxx
           gateway xxx.xxx.xxx.xxx

    auto eth1
    iface eth1 inet static
            address 192.168.0.1
            netmask 255.255.255.0

    W tej wersji ręcznie wpisujesz w konfiguracji eth0:
    address - twoje IP
    netmask - maska podsieci
    network - adres sieci
    gateway - brama sieci.
    Czyli w miejscu xxx.xxx.... wpisujesz wartości jakie otrzymałeś od swojego administratora.
    Dla eth1 jak w pierwszym wariancie pozostają statyczne wartości.





    Jeśli wpisaliśmy co odpowiednie dla nas zamykamy pliczek zapisując zmiany.
    Otwieramy:
    Code:
    sudo kate /etc/resolv.conf

    Powinien on wyglądać następująco:
    Code:
    nameserver xxx.xxx.xxx.xxx
    
    nameserver xxx.xxx.xxx.xxx

    Jeśli działasz z DHCP to adresy już będą wpisane. Sprawdź czy są zgodne z prawdą i zamknij. Jeśli konfigurujesz połączenie eth0 statycznie to wpisz swoje adresy serwerów DNS.

    Jeśli konfiguracja odbywa się dla sieci wifi to wszystkie wpisy eth0/1 zastępujesz odpowiednimi dla Ciebie interfejsami wlan.

    Restartujemy interfejsy sieciowe poleceniem:
    Code:
    sudo /etc/init.d/networking restart 

    Wydajemy polecenie:
    Code:
    ping google.pl

    Jeśli dostajemy odpowiedź na ping to znaczy, że nasz serwer jest podłączony do internetu. Jedziemy dalej.

    Udostępnianie połączenia
    Tworzymy plik:
    Code:
    sudo kate /etc/init.d/firewall


    W jego treści wklejamy:
    Code:

    # wlaczenie w kernelu forwardowania
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # czyszczenie starych regul
    iptables -F
    iptables -X
    iptables -t nat -X
    iptables -t nat -F
    # ustawienie polityki dzialania
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    # zezwolenie nna laczenie sie z naszym zewnetrznym ip po ssh

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A FORWARD -o lo -j ACCEPT

    iptables -A INPUT -s 0/0 -d ip.ip.ip.ip -p tcp --dport 22 -j ACCEPT
    iptables -A OUTPUT -s 0/0 -d ip.ip.ip.ip -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -s 0/0 -d ip.ip.ip.ip -p udp --dport 22 -j ACCEPT
    iptables -A OUTPUT -s 0/0 -d ip.ip.ip.ip -p udp --dport 22 -j ACCEPT
    # polaczenia nawiazane
    iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
    iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
    iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
    # udostepniaie internetu w sieci lokalnej
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
    iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT


    W miejscach ip.ip.ip.ip wpisujemy IP naszego połączenia z internetem.
    Jeśli dla eth1 ustawione IP jest 192.168.0.1 to w ostatnich dwóch liniach zostają bez zmian wpisy 192.168.0.0.
    Zamykasz plik i zapisujesz.

    Teraz nadamy mu uprawnienia do uruchamiania:
    Code:
    sudo chmod +x /etc/init.d/firewall

    Dopisujemy skrypt firewall do autouruchamiania:
    Code:
    sudo update-rc.d firewall defaults 20


    Konfiguracja sieci w Windows
    We właściwościach połączenia sieciowego połączonego z PC1 w konfiguracji TCP/IP wpisujemy:
    IP 192.168.0.2
    Maska Sieci 255.255.255.0
    Brama 192.168.0.1
    DNS'y:
    xxx.xxx.xxx.xxx
    xxx.xxx.xxx.xxx
    DNS`y podajesz te same, które masz wpisane w pliku /etc/resolv.conf.

    Jeśli windows skonfigurowałeś to na maszynie z linuksem wydajesz polecenie:
    Code:
    sudo /etc/init.d/firewall

    Uruchamia ono nasz skrypt w bieżącej sesji systemu. Przy każdej kolejnej skrypt będzie startował sam - dodaliśmy odpowiedni wpis do autouruchamiania.

    Sprawdź teraz czy windows jest online. Jeśli nic nie pomieszałeś po drodze to powinno wszystko być ok. Jeśli natomiast coś nie gra to przejrzyj wszystkie pliki konfiguracji jeszcze raz i zobacz czy wszystko się zgadza.
    Powyższa metoda działa bez zastrzeżeń na Debian, Ubuntu, Kubuntu - na tych sprawdzałem i wiem, że działa bez zastrzeżeń. Na innej dystrybucji metoda jest niemal identyczna, konfiguracja maskarady jest taka sama tylko wykonanie może być nieco inne. Przykładowo nie będziesz korzystał z sudo tylko będziesz musiał się zalogować w konsoli jako root.
    Skrypt w takiej postaci działa i spełnia swoje zadanie nawet gdy użytkownik Linuksa nie jest zalogowany do serwera X. Wystarczy odpalić np. PC z linuksem i gdy dojdzie do ekranu logowania możesz iść na spacer, a drugi PC/Laptop będzie już online. Ja osobiście z takiej metody korzystam.
    Jeśli mimo wszystko nie udało Ci się uruchomić maskarady i nie masz nadal połączenia z internetem na windows to w następnym poście zostanie opisana metoda graficznej konfiguracji udostępniania połączenia.

    Źródłem, które wykorzystałem do tego opisu jest strona forum Debian Users Gang:
    http://dug.net.pl/texty/masq.php


    Fajne!