Już wcześniej na naszym blogu pojawił się elaborat na ten temat 😉 Dziś omówimy tę kwestię maksymalnie szybko. Oczywiście tamten artykuł może być pomocny przy wystąpieniu błędów z wykonaniem takiej konfiguracji. Zatem zachęcamy do lektury.
Zawartość artykułu
Założenia
1) Raspberry Pi będzie „otrzymywać” Internet przez WiFi. W jaki sposób połączyć ten komputer z WiFi (także bez GUI – po samej konsoli) opisaliśmy w artykule:
2. Internet będzie następnie serwowany do innego komputera poprzez kabel typu Ethernet.
Wymagany zestaw
1. Urządzenie Rasberry PI w wersji posiadającej odp. interface’y sieciowe (WiFi, gniazdo Ethernet). Ewentualnie zamiast wbudowanego WiFi (starsze wersje) można np. użyć anteny wireless lan w postaci modułu USB.
2. Zainstalowany (w miarę aktualny) system Raspbian. Wystarczą też wersje bazowe (naszym przypadku to bullseye
)
3. Kabel Ethernet
4. Urządzenie obierające Internet – musi także posiadać gniazdo Ethernet.
5. Zasilacz USB do zapewnienia prądu dla Raspberry PI.
Ustawienie systemu Raspian na Raspberry PI.
Połączenie z WIFI.
Tutaj zakładamy, że połączenie jest zapewnione i jeśli wywołać w konsoli np.
1 |
ping linuxporady.pl |
Otrzymujesz poprawną odpowiedź naszego serwera.
Instalacja wymaganych pakietów:
1 |
sudo apt-get install dnsmasq |
Tworzenie skryptu do dzielenia łącza.
W folderze głownym załóż plik:
1 |
nano ~/wifi-to-eth-route.sh |
Treść tego pliku jest poniżej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash # Share Wifi with Eth device # # # This script is created to work with Raspbian Stretch # but it can be used with most of the distributions # by making few changes. # # Make sure you have already installed `dnsmasq` # Please modify the variables according to your need # Don't forget to change the name of network interface # Check them with `ifconfig` sudo ifconfig eth0 down sudo ifconfig eth0 10.0.0.1 netmask 255.0.0.0 sudo ifconfig eth0 up sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -j MASQUERADE sudo iptables -F FORWARD sudo iptables -A FORWARD -j ACCEPT sudo iptables -nvL sudo sysctl -w net.ipv4.ip_forward=1 |
Autostart skryptu
Dodanie skryptu do automatycznego uruchomienia przy starcie systemu wykonasz edytując plik:
1 |
sudo nano /etc/rc.local |
Wpis, który musisz tam umieścić znajduje się przed komendą exit 0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo bash /home/{TWÓJ-UŻYTKOWNIK}/wifi-to-eth-route.sh & exit 0 |
Oczywiście zamiast „{TWÓJ-UŻYTKOWNIK}” podaj nazwę Twojego usera w Raspberry PI.
Konfiguracja klienta
Konfiguracja urządzenia, które otrzyma polączenie z Internetem od Raspberry polega na konfiguracji statycznego IP. Domyślnie – adres IP jest przydzielany automatycznie (DHCP) w tym przypadku musisz podać adres stały. Niezależnie czy będzie to system Windows, Linux czy inny.
Na podstawie skryptu do dzielenia łącza powyżej – będzie to IP z zakresu 10.0.0.1.
Czyli podaj:
- Adres IP > niż 10.0.0.1. Np. 10.0.0.2 albo 10.0.0.3 itp.
- Maska podsieci (netmask) musi wynosić: 255.0.0.0
- Bramka domyślna (gateway) jest taka sama jak IP Raspberry, czyli: 10.0.0.1
- Adres DNS. tutaj posiłkuj się DNS od Google’a. Podaj: 8.8.8.8
grafika:wallpaperflare.com