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
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
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:
sudo nano /etc/rc.local
aggiungiamo il contenuto standard:
#!/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:
sudo chmod +x /etc/rc.local
quindi inseriamo le seguenti righe
modprobe ip_conntrack
modprobe iptable_nat
Se è richiesto usare connessioni FTP impostare anche queste due righe
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 )
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Abilitiamo il forward
sudo iptables -t filter -P FORWARD ACCEPT
Diamo poi i permessi a se stesso e ad eventuali connessioni già stabilite
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
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
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
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:
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 ):
sudo systemctl mask systemd-networkd-wait-online.service