Как раздать интернет для rasberypi через ноутбук ubuntu 18.04
Допустим, нужно подключить распу, к интернету через ноутбук.
Пусть:
eth0 - сетевой интерфейс на распе
enp2s0 - сетевой интерфейс на ноутбуке
192.168.5.1 - IP ноутбука
192.168.5.2 - IP распы
Перед тем, как начать, рекомендую прочитать про настройку сети в Ubuntu 18.04 через Network Manager.
Способ 1. Самый лучший.
Работает, если установлен ifconfig и route. Самый нормальный рабочий способ. Остальные способы могут не работать.
На ноутбуке:
ifconfig enp2s0 192.168.5.1 netmask 255.255.255.0
iptables -t nat -I POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -j MASQUERADE
iptables -I FORWARD -o enp2s0 -j ACCEPT
iptables -I FORWARD -i enp2s0 -j ACCEPT
Разрешите forward на ноутбуке:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
На распе:
ifconfig eth0 192.168.5.2 netmask 255.255.255.0
route add default gw 192.168.5.1 eth0
Способ 2
Тоже работает, но с первого раза может не сработать. Используйте его, если нет ifconfig.
Сделайте на распе:
ip address add 192.168.5.2/24 dev eth0
ip route add 192.168.5.0/24 dev eth0
ip route add default via 192.168.5.1
Сделайте на ноутбуке
echo 1 > /proc/sys/net/ipv4/ip_forward
или пропишите в файле /etc/sysctl.conf
net.ipv4.ip_forward = 1
и сделайте:
sysctl -p
Выполните команды для Iptables на ноутбуке:
ip address add 192.168.5.1/24 dev enp2s0
ip route add 192.168.5.0/24 dev eth0
iptables -t nat -I POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -j MASQUERADE
iptables -I FORWARD -o enp2s0 -j ACCEPT
iptables -I FORWARD -i enp2s0 -j ACCEPT
Поидее интернет должен работать на распе
Способ 3
В новых версиях Ubuntu данный способ не работает. Вместо него нужно юзать Network Manager или Systemd Network. А жаль. Хороший был способ.
Задает статический IP адрес для распы. В файле /etc/network/interfaces пропишите:
auto eth0
iface eth0 inet static
address 192.168.5.2
network 192.168.5.0
netmask 255.255.255.0
broadcast 192.168.5.255
gateway 192.168.5.1
На ноутбуке, прописывать не рекомендуется, но можно:
auto enp2s0
iface enp2s0 inet static
address 192.168.5.1
network 192.168.5.0
netmask 255.255.255.0
broadcast 192.168.5.255
gateway 192.168.5.1
Способ 4
Через systemd. Systemd - это новая фича убунту, которая может управлять автозапуском приложений, есть менеджер сети, и резолвер ДНС. Имхо работает через одно место, как и весь systemd.
Включите systemd network:
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service
Пропишите конфиг /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=yes
RouteMetric=20
## to use static IP uncomment these instead of DHCP
#DNS=192.168.5.1
#Address=192.168.5.2/24
#Gateway=192.168.5.1
#Allow ip forward
IPForward=no
Перезапустите сервис:
systemctl restart systemd-networkd.service