Strona główna > Komputer, Sieci, Ubuntu > Udostępniamy internet spod Ubuntu

Udostępniamy internet spod Ubuntu

Długo szukałem czegoś o udostępnianiu połączenia internetowego spod Ubuntu dla Windowsa XP. Pomoc nadeszła z ubuntowego IRCa – serdeczne za to dzięki. Jako że temat stosunkowo popularny, to sądzę że warto opisać w jednym miejscu, tak żeby poszukujący łatwo mogli sobie co nieco wyszukać. No to koniec tego gadania i zaczynamy ;-)

Zanim jednak zaczniemy

Autor nie bierze odpowiedzialności za uszkodzenia powstałe w wyniku stosowania poniższych instrukcji. Przy wykonywaniu/modyfikowaniu komend zaleca się wykonywanie kopii zapasowych edytowanych plików na wypadek awarii. Powyższe instrukcje sprawdziłem osobiście przy stałym adresie IP połączenia na systemie operacyjnym Linux Ubuntu 7.10 z jądrem2.6.22-14-generic i działały bezproblemowo.

Pierwsze co będzie nam potrzebne to zasadniczo 2 kompy, trochę kabla i 2 wtyczki RJ45 – przydałaby się także zaciskarka do owych wtyków. Maszyna udostępniająca musi posiadać 2 interfejsy sieciowe ( jeden do Internetu i drugi do drugiego kompa). W drugim kompie potrzeba tylko jednej sieciówki. Oba komputery lączymy przy uzyciu kabla skrosowanego, czyli na jednej wtyczce kolory powinny być ustawione:

biało-pomarańcz. pomarańcz. biało-ziel. nieb. biało-nieb. ziel. biało-brąz. brąz

czyli standard T56B, natomiast drugi wtyk to standard T56A, czyli

biało-ziel. ziel biało-pomarańcz. nieb. biało-nieb. pomarańcz. biało-brąz. brąz

I to by było na tyle, jeżeli chodzi o przygotowanie kabla do połączenia. Tak przygotowaną skrętką możemy połączyć obie maszyny.

Teraz pora na ustawienie odpowiednich parametrów w komputerze udostępniającym sieć. Przy użyciu ifconfig orientujemy się, która karta będzie służyć do połączenia z siecią, a która do udostępniania łącza. W tym tutorialu założyłem, że:

eth0 – udostępnia

eth1 – łączy się z internetem

Ustawiamy na początek IP dla karty udostepniającej

sudo ifconfig eth0 192.168.0.1 up

Teraz potrzebny nam będzie skrypt – (autora nie pamiętam – otrzymałem w każdym razie na #ubuntu-pl – jak się odnajdzie – podpiszemy ;-)

W skrypcie założono takie interfejsy jak podane powyżej – jeżeli masz inne to musisz zmienic je w odpowiednich linijkach. Również IP wyjsciowe jest takie jak u mnie ;-)

#!/bin/sh
# Sciezka do iptables
IPTABLES=/sbin/iptables
# Interfejs zewnetrzny
EXT_IP=77.65.162.134
EXT_INT=eth1
PODSIEC1="192.168.0.0/24"
PODSIEC2="192.168.1.0/24"
$IPTABLES -t nat -A POSTROUTING -s $PODSIEC1 -o $EXT_INT -j SNAT --to-source $EXT_IP
$IPTABLES -t nat -A POSTROUTING -s $PODSIEC2 -o $EXT_INT -j SNAT --to-source $EXT_IP
# Lokalny interfejs
LAN_IP=192.168.0.1
LAN_INT=eth0
# Siec
SIEC_IP=192.168.0.0
SIEC_MASKA=255.255.255.0
SIEC_IP2=192.168.1.0
SIEC_MASKA2=255.255.255.0
# Hosty, ktorym udostepniamy lacze
HOST1=192.168.0.2
HOST2=192.168.1.2
# Uruchomienie przekazywania pakietow
echo "1" > /proc/sys/net/ipv4/ip_forward
# Czyszczenie tablic iptables (NAT i Filtrowanie)
$IPTABLES -F -t nat
$IPTABLES -X -t nat
$IPTABLES -F -t filter
$IPTABLES -X -t filter
# Odrzucenie i brak zezwolenia na forwardowanie pakietow
$IPTABLES -t filter -P FORWARD DROP
# Przepuszczanie pakietow z sieci lub przeznaczone dla sieci
$IPTABLES -t filter -A FORWARD -s $SIEC_IP/$SIEC_MASKA -d 0/0 -j ACCEPT
$IPTABLES -t filter -A FORWARD -s 0/0 -d $SIEC_IP/$SIEC_MASKA -j ACCEPT
$IPTABLES -t filter -A FORWARD -s $SIEC_IP2/$SIEC_MASKA2 -d /0 -j ACCEPT
$IPTABLES -t filter -A FORWARD -s 0/0 -d $SIEC_IP2/$SIEC_MASKA2 -j ACCEPT
# Maskarada
$IPTABLES -t nat -A POSTROUTING -s $HOST1 -d 0/0 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s $HOST2 -d 0/0 -j MASQUERADE
# Moduly do FTP i IRCa
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc

Powyższy tekst zapisujemy sobie jako iptables.sh w katalogu domowym. Następnie nadajemy mu prawa wykonalności.

sudo chmod +x /home/user/iptables.sh

Nastepnie również z sudo odpalamy ten skrypt. No i w zasadzie jesteśmy na półmetku. Teraz sprawdzamy sobie w networ-managerze DNS’y i odpisujemy je sobie. Czas na konfigurację maszyny z windowsem.

Wchodzimy w Połączenia internetowe i następnie we właściwości interfejsu, do ktorego mamy podpięty kabel. Dalej zaznaczamy protokój TCP/IP i tam ustawiamy następujące wartości.

IP: 192.168.0.2
Brama:  192.168.0.1
I ta srodkowa wartość(nie pamietam co to ma być):  255.255.255.0
i do tego DNS'y takie jakie odpisaliśmy z Ubuntu.

No i tym sposobem internet na drugim kompie powinien działać bezproblemowo. Jednakże reboot komputera z Ubuntu zmusi nas do ponownej zmiany IP interfejsu i odpalenia skryptu. Aby temu zaradzić odpalamy

sudo gedit etc/rc.local

i do pliku dopisujemy

/home/user/iptables.sh

tudzież inną scieżkę do skryptu z góry strony. Jako kolejny plik edytujemy /etc/network/interfaces, czyli:

sudo gedit  /etc/network/interfaces

gdzie dopisujemy:

 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0

I tym razem to już naprawdę koniec ;-)

  1. kj
    Marzec 19, 2008 o 10:08 pm

    Zdecydowanie szybciej chodziłoby Ci to pod którymś z systemów BSD.

  2. kj
    Marzec 25, 2008 o 8:11 pm

    Aha, zapomniałeś zdaje się wyłączyć ICMP forwarding oraz zbudować porządny firewall :P

  3. Rootyger
    Maj 21, 2011 o 10:26 pm

    No pewnie, zapomniałeś jeszcze załatwić pokój na bliskim wschodzie. Zaraz popróbuje co napisałeś, na pewno mi się przyda

  1. Kwiecień 19, 2008 o 6:19 pm

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: