Как из RPI3 сделать роутер
Как установить дистрибутив RosaLinux на RaspberryPI3? #rpi3
Достаточно скачать образ распаковать и записать на флешку
wget https://file-store.rosalinux.ru/api/v1/file_stores/c329bfad6d6738ee4d04f540c3cb2c1d749d55cd tar -xvf RosaLinux-pi3b+-2023.1-jenkins.img.xz
Далее нужно подключить microSD карту и определить подключенный диск, это удобно сделать через вывод dmesg
Пример вывода:
[Вс апр 11 23:16:30 2021] sd 7:0:0:0: Attached scsi generic sg6 type 0 [Вс апр 11 23:16:30 2021] sd 7:0:0:0: [sdg] Attached SCSI removable disk [Вс апр 11 23:16:49 2021] sd 7:0:0:0: [sdg] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB) [Вс апр 11 23:16:49 2021] sdg: detected capacity change from 0 to 31116288 [Вс апр 11 23:16:49 2021] sdg: sdg1 sdg2 [Вс апр 11 23:18:15 2021] '''sdg: sdg1 sdg2''' [Вс апр 11 23:18:29 2021] sdg: detected capacity change from 31116288 to 0
/dev/sdg и есть искомый диск.
Далее нужно записать скачанный образ на microsd
sudo dd if=RosaLinux-pi3b+-2023.1-jenkins.img of=/dev/sdg bs=1M
После этого можно будет запуститься.
Юзер rosa Пароль rosa
Приступим к настройке роутера. Конфигурация его такова, что wlan0 порт это внешний интерфейс с интернетом, а eth0 будет раздавать адреса и сеть в локалку.
конфиг wifi настраивается через nmtui и сложностей не вызывает.
Пример настройки eth0
Нужно обратить внимание только на IPv4 CONFIGURATION <Manual> Должно быть именно так, а не dhcp.
Далее выполняем установку dnsmasq
dnf install -y dnsmasq
создаем файл конфига /etc/dnsmasq.d/server.conf с содержимым
# Only listen to routers' LAN NIC. Doing so opens up tcp/udp port 53 to localhost and udp port 67 to world: interface=eth0 # dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with dynamic interfaces (assigning dynamic IPs). # dnsmasq will discard world requests to them, but the paranoid might like to close them and let the kernel handle them. bind-interfaces # Optionally set a domain name domain=fdrt.local # Set default gateway dhcp-option=3,0.0.0.0 # Set DNS servers to announce dhcp-option=6,0.0.0.0 # If your dnsmasq server is also doing the routing for your network, you can use option 121 to push a static route out. # x.x.x.x is the destination LAN, yy is the CIDR notation (usually /24), and z.z.z.z is the host which will do the routing. #dhcp-option=121,x.x.x.x/yy,z.z.z.z # Dynamic range of IPs to make available to LAN PC and the lease time. # Ideally set the lease time to 5m only at first to test everything works okay before you set long-lasting records. dhcp-range=192.168.111.50,192.168.111.100,12h # Provide IPv6 DHCP leases, the range is constructed using the network interface as prefix #dhcp-range=::f,::ff,constructor:eth0 # If you’d like to have dnsmasq assign static IPs to some clients, bind the LAN computers NIC MAC addresses: dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50 dhcp-host=aa:bb:cc:ff:dd:ee,192.168.111.51
Включаем форвардинг пакетов:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p /etc/sysctl.conf
Настраиваем iptables
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
Вместо выполнения команд можно отредактировать конфиг /etc/sysconfig/iptables
# Generated by iptables-save v1.8.7 on Wed Dec 16 17:42:28 2020 *filter :INPUT ACCEPT [443:31304] :FORWARD ACCEPT [1:88] :OUTPUT ACCEPT [304:64489] -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o wlan0 -j ACCEPT COMMIT # Completed on Wed Dec 16 17:42:28 2020 # Generated by iptables-save v1.8.7 on Wed Dec 16 17:42:28 2020 *nat :PREROUTING ACCEPT [64:4342] :INPUT ACCEPT [22:1726] :OUTPUT ACCEPT [18:1495] :POSTROUTING ACCEPT [1:128] -A POSTROUTING -o wlan0 -j MASQUERADE COMMIT # Completed on Wed Dec 16 17:42:28 2020
Далее запустим все нужные сервисы
systemctl enable sshd systemctl enable dnsmasq systemctl enable iptables
systemctl start sshd systemctl start dnsmasq systemctl start iptables
После всех этих действий rpi3 будет работать как роутер, на eth0 раздавать dhcp и ходить в интернет через wlan0.