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 ;-)
marzec 19, 2008 o 10:08 pm |
Zdecydowanie szybciej chodziłoby Ci to pod którymś z systemów BSD.
marzec 25, 2008 o 8:11 pm |
Aha, zapomniałeś zdaje się wyłączyć ICMP forwarding oraz zbudować porządny firewall :P
kwiecień 19, 2008 o 6:19 pm |
[...] tutorialu opieram się na takich samych ustawieniach sieci, jak w how-to o udostepnianiu łącza. Testowane osobiście na Ubuntu 8.04. Autor nie ponosi odpowiedzialności za ewentualne szkody w [...]