Dzielenie łącza przez Raspberry Pi, udostępnianie Internetu przez system Rasbian

Przypuśćmy, że nasza Malinka ma połączenie z Internetem za pomocą WiFi. Zatem dysponujemy wolnym gniazdem ethernet (Kabel sieciowy), które może posłużyć nam jako wyjście z którego będzie udostępniane połączenie internetowe. Taki sygnał możemy następnie wpuścić czy to na dowolny komputer PC czy też na router, który następnie sam będzie dalej rozdzielał łącze.

Schemat działania:

źródło: stackexchange.com

Brzmi dość obiecująco i w zasadzie nie jest takie trudne do wykonania 🙂

Czym musimy dysponować:

  • Urządzenie Raspberry Pi
  • Zainstalowany system Rasbian
  • Karta WiFi (co prawda jest już wbudowana fabryczna karta w urządzenie, jednak lepiej użyć kartę na USB, która ma lepszy sygnał odbioru i nie rwie tak połączenia. Jednak wszystko zależy od Twojej konfiguracji sprzętowej)
  • Kabel ethernet. Najlepiej scrossowany, choć nie jest to warunek konieczny.

Instalacja Raspbian.

Jeśli posiadasz już ten system na Twojej Mailince – pomiń tę sekcję.

Na początek musimy dysponować systemem Rasbian na naszym urządzeniu Raspberry Pi. W tym celu ściągamy plik .img z oficjalnej strony producenta:

https://www.raspberrypi.org/downloads/raspbian/

Niestety strona często jest przeciążona:

musimy skorzystać z licznych witryn świadczących mirrory np.

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

Stamtąd pobieramy plik:

wget http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2018-06-29/2018-06-27-raspbian-stretch.zip

Następnie go rozpakowujemy:

unzip 2018-06-27-raspbian-stretch.zip

Gotowy plik .img instalujemy analogicznie jak to przedstawialismy w artykule https://linuxporady.pl/instalacja-w-konsoli-systemu-osmc-na-karcie-microsd-dla-raspberry-pi/

Czyli wkładamy kartę do komputera (przejściówka, czytnik kart itp) i odmountujemy wszystkie dyski:

umount -a

Listujemy urządzenia, które są wpięte w komputer:

sudo fdisk -l

Odnajdujemy urządzenie, zazwyczaj jest to:

/dev/mmcblk0

Nagrywamy na nią nasz plik .img, który pobieramy:

sudo dd if=./2018-06-27-raspbian-stretch.img of=/dev/mmcblk0

Teraz należy uzbroić się w cierpliwość… Może to potrwać nawet ok 30 min.

Nie trzeba chyba wspominać, że ta operacja permanentnie nadpisze wszystkie Twoje dane na karcie 😐

Połączenie Raspberry Pi z Internetem

Opisywaliśmy to w artykule https://linuxporady.pl/raspberry-pi-i-polaczenie-wifi-pre-shared-key/

Wykonaj te czynności i upewnij się, że masz łącze z netem przez proste wywołanie w konsoli:

ping linuxporady.pl

Dzielenie łącza przez Raspberry Pi – konfiguracja komputera przekazującego połączenie z Internetem (Rasbiana)

OK przechodzimy do sedna sprawy.

Na początek nazwy interfejsów sieciowych. Możemy je sprawdzić poprzez:

ifconfig

Dla nas będzie to:

wlan0 – interfejs karty WIFI

eth0 – interfejs łącza ethernet

Jeśli u Ciebie jest inaczej (szczególnie jeśli używasz np. dodatkowej karty WIFI) – uwzględnij to.

Na początek aktualizujemy system:

sudo su
apt-get update
apt-get ugrade

Następnie instalujemy:

sudo apt-get install network-manager dnsmasq

Restetujemy system:

sudo reboot

Ustawiamy w Rasbianie następujące adresy IP:

IP: 192.168.10.1
NETMASK: 255.255.255.0
GATEWAY: 192.168.10.1

Ustawiamy te adresy za pomocą komend:

ifconfig eth0 down
ifconfig eth0 192.168.10.1 netmask 255.255.255.0
ifconfig eth0 up

Restartujemy sieć:

sudo /etc/init.d/networking restart

Wywołujemy komendy:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Po czym odp. konfiugurujemy iptables:

sudo iptables -F FORWARD 
sudo iptables -A FORWARD -j ACCEPT 
sudo iptables -nvL

Konfigurujemy DNS. Tworzymy kopię bezpieczeństwa tego pliku:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

Na jego końcu dopisujemy:

interface=eth0 dhcp-range=192.168.10.10,192.168.10.19,4h

Resetujemy usługę:

sudo /etc/init.d/dnsmasq restart

Następnie należy zresetować sieć:

/etc/init.d/networking restart

W przypadku prośby o hasło użyj domyślnego hasła w Rasbianie

Dzielenie łącza przez Raspberry Pi – konfiguracja komputera otrzymującego Internet (Klienta)

Niezależnie czy komputerem który otrzymuje łącze będzie ten działający pod Windows czy pod Linux nalezy wpisać następujące ustawienia w ustawieniach sieci:

ADRES IP: 192.168.10.10
MASKA SIECI: 255.255.255.0
BRAMA: 192.168.10.1

DNS (OD GOOGLE INC.): 8.8.8.8

Połaczenie (interfejs) należy następnie zrestartować i upewnić się, że w/w adres IP jest przyznany.

Następnie spradzamy działanie łącza. Np. poprzez wejście na naszą stronę 🙂

Ponowne włączanie dzielenia łącza po restarcie Rasbiana

Ogranicza się do wywołania tych komend:

sudo ifconfig eth0 down
sudo ifconfig eth0 192.168.10.1 netmask 255.255.255.0
sudo ifconfig eth0 up
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

Możliwe problemy.

W przypadku gdy połączenie nie działa spróbuj wykonać następujące czynności na Rasbianie.

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
sudo iptables -I FORWARD -o wlan0 -s 192.168.0.0/16 -j ACCEPT
sudo iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT

Utwórz kopię pliku:

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak

Odkomentuj tę linię, zamieniając:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Na:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Ewenutalnie na komputerze otrzymującym Internet zamień Google’owskie DNSy:

8.8.8.8

na Twoje. Odczytasz je poprzez:

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2

Pamiętaj także o konieczności każdorazowego restartowania interfejsów po wykonanych zmianach. W przypadku Windowsa po prostu włącz i wyłącz daną kartę sieciową.

Źródła i materiały:
chrisjrob.com
medium.com
stackexchange.com
wallpapercave.com

Możesz również polubić…

Inna porada:
Problem z uruchomieniem pierwszy raz maszyny w VirtualBox pod Ubuntu…