Configurare Ubuntu 18.04 come gateway
Aggiorno l’articolo Configurare Ubuntu come gateway adattandolo a Ubuntu 18.04
Per impostare Ubuntu come gateway utilizziamo iptables
Innanzi tutto impostiamo l’inoltro degli IP
1 |
sudo nano /etc/sysctl.conf |
E impostiamo il valore net.ipv4.ip_forward a 1 ( è possibile anche eseguire il veloce comando echo “1” > /proc/sys/net/ipv4/ip_forward ma poi la modifica si perde al riavvio della macchina )
Facciamo rileggere il file /etc/sysctl.conf
1 |
sysctl -p |
Ora abilitiamo il NAT e richiamiamolo dal file /etc/rc.local in maniera che venga richiamato ad ogni boot
Su Ubuntu 18.04 il file rc.local non è più presente di default, quindi occorre crearlo:
1 |
sudo nano /etc/rc.local |
aggiungiamo il contenuto standard:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/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. exit 0 |
diamo i permessi:
1 |
sudo chmod +x /etc/rc.local |
quindi inseriamo le seguenti righe
1 2 |
modprobe ip_conntrack modprobe iptable_nat |
Se è richiesto usare connessioni FTP impostare anche queste due righe
1 2 |
modprobe ip_conntrack_ftp modprobe ip_nat_ftp |
Ora occorre impostare le regole del firewall, impostiamo da subito il mascheramento sull’interfaccia WAN ( eth1 in questo caso è la scheda di rete collegata al nostro modem/router )
1 |
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE |
Abilitiamo il forward
1 |
sudo iptables -t filter -P FORWARD ACCEPT |
Diamo poi i permessi a se stesso e ad eventuali connessioni già stabilite
1 2 3 |
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT |
Diamo i permessi solo alla nostra LAN per evitare che da fuori si colleghino
1 |
sudo iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT |
Dopo di chè sta solo nel giocare con le regole di iptables per abilitare o meno i servizi che ci servono.
Ovviamente le regole qui sopra se riavviamo la macchina spariscono, quindi serve salvare uno script e farlo eseguire al boot richiamato magari da /etc/rc.local o meglio quando la scheda di rete viene attivata editando /etc/network/interfaces e aggiungendo l’opzione post-up
1 2 3 4 5 6 7 |
auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 post-up iptables-restore < file-con-le-nostre-regole |
In questo caso le regole devono essere senza la chiamata a iptables, per ottenere il file adatto basta fare un dump prima
1 |
sudo iptables-save > file-con-le-nostre-regole |
Nota: potrebbe capitare specialmente in fase di installazione che la WAN non abbia il cavo collegato, per evitare tempi morti in fase di boot dove il sistema attende risposta dalle schede eseguire occorre aggiungere il parametro hotplug ( optional : true ) nel config di netplan alle schede che lo necessitano:
1 2 3 4 5 |
ethernets: eth1: dhcp4: false dhcp6: false optional: true |
Eventualmente come ultima spiaggia per evitare sempre quei tempi morti se quello sopra non funziona rimane sempre il comando ( sconsigliato ):
1 |
sudo systemctl mask systemd-networkd-wait-online.service |