Как раздать интернет для 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