{"id":2104,"date":"2018-05-28T16:14:15","date_gmt":"2018-05-28T14:14:15","guid":{"rendered":"http:\/\/blog.sfsoft.it\/?p=2104"},"modified":"2018-06-04T10:24:04","modified_gmt":"2018-06-04T08:24:04","slug":"configurare-ubuntu-18-04-come-gateway","status":"publish","type":"post","link":"http:\/\/www.sfsoft.it\/blog\/2018\/05\/28\/configurare-ubuntu-18-04-come-gateway\/","title":{"rendered":"Configurare Ubuntu 18.04 come gateway"},"content":{"rendered":"<p><span style=\"color: #ff0000;\">Aggiorno l&#8217;articolo <a style=\"color: #ff0000;\" href=\"http:\/\/blog.sfsoft.it\/2011\/04\/01\/configurare-ubuntu-come-gateway\/\" target=\"_blank\" rel=\"noopener\">Configurare Ubuntu come gateway<\/a> adattandolo a Ubuntu 18.04<\/span><\/p>\n<p>Per impostare Ubuntu come <em>gateway<\/em> utilizziamo <em>iptables<\/em><\/p>\n<p>Innanzi tutto impostiamo l&#8217;inoltro degli <em>IP<\/em><\/p>\n<pre class=\"\" lang=\"bash\">sudo nano \/etc\/sysctl.conf<\/pre>\n<p>E impostiamo il valore <em>net.ipv4.ip_forward<\/em> a 1 ( \u00e8 possibile anche eseguire il veloce comando <em>echo &#8220;1&#8221; &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/em> ma poi la modifica si perde al riavvio della macchina )<\/p>\n<p>Facciamo rileggere il file\u00a0<em>\/etc\/sysctl.conf<\/em><\/p>\n<pre class=\"\" lang=\"bash\">sysctl -p<\/pre>\n<p>Ora abilitiamo il <em>NAT<\/em> e richiamiamolo dal file <em>\/etc\/rc.local<\/em> in maniera che venga richiamato ad ogni <em>boot<\/em><\/p>\n<p>Su <em>Ubuntu 18.04<\/em> il file <em>rc.local<\/em> non \u00e8 pi\u00f9 presente di default, quindi occorre crearlo:<\/p>\n<pre class=\"\" lang=\"bash\">sudo nano \/etc\/rc.local<\/pre>\n<p>aggiungiamo il contenuto standard:<\/p>\n<pre class=\"lang:default decode:true\">#!\/bin\/sh -e\r\n#\r\n# rc.local\r\n#\r\n# This script is executed at the end of each multiuser runlevel.\r\n# Make sure that the script will \"exit 0\" on success or any other\r\n# value on error.\r\n#\r\n# In order to enable or disable this script just change the execution\r\n# bits.\r\n#\r\n# By default this script does nothing.\r\n\r\n\r\n\r\nexit 0<\/pre>\n<p>diamo i permessi:<\/p>\n<pre class=\"lang:default decode:true\">sudo chmod +x \/etc\/rc.local<\/pre>\n<p>quindi inseriamo le seguenti righe<\/p>\n<pre class=\"\" lang=\"bash\">modprobe ip_conntrack\r\nmodprobe iptable_nat<\/pre>\n<p>Se \u00e8 richiesto usare connessioni <em>FTP<\/em> impostare anche queste due righe<\/p>\n<pre class=\"\" lang=\"bash\">modprobe ip_conntrack_ftp\r\nmodprobe ip_nat_ftp<\/pre>\n<p>Ora occorre impostare le regole del <em>firewall<\/em>, impostiamo da subito il mascheramento sull&#8217;interfaccia <em>WAN<\/em> ( <em>eth1<\/em> in questo caso \u00e8 la scheda di rete collegata al nostro modem\/router )<\/p>\n<pre lang=\"bash\">sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE<\/pre>\n<p>Abilitiamo il forward<\/p>\n<pre lang=\"bash\">sudo iptables -t filter -P FORWARD ACCEPT<\/pre>\n<p>Diamo poi i permessi a se stesso e ad eventuali connessioni gi\u00e0 stabilite<\/p>\n<pre lang=\"bash\">sudo iptables -A INPUT -i lo -j ACCEPT\r\nsudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\r\nsudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT<\/pre>\n<p>Diamo i permessi solo alla nostra <em>LAN<\/em> per evitare che da fuori si colleghino<\/p>\n<pre lang=\"bash\">sudo iptables -A INPUT -s 192.168.1.0\/24 -i eth0 -j ACCEPT<\/pre>\n<p>Dopo di ch\u00e8 sta solo nel giocare con le regole di <em>iptables<\/em> per abilitare o meno i servizi che ci servono.<\/p>\n<p>Ovviamente le regole qui sopra se riavviamo la macchina spariscono, quindi serve salvare uno <em>script<\/em> e farlo eseguire al <em>boot<\/em> richiamato magari da <em>\/etc\/rc.local<\/em> o meglio quando la scheda di rete viene attivata editando <em>\/etc\/network\/interfaces<\/em> e aggiungendo l&#8217;opzione <em>post-up<\/em><\/p>\n<pre lang=\"bash\">auto eth0\r\niface eth0 inet static\r\naddress 192.168.1.1\r\nnetmask 255.255.255.0\r\nnetwork 192.168.1.0\r\nbroadcast 192.168.1.255\r\npost-up iptables-restore &lt; file-con-le-nostre-regole<\/pre>\n<p>In questo caso le regole devono essere senza la chiamata a <em>iptables<\/em>, per ottenere il file adatto basta fare un <em>dump<\/em> prima<\/p>\n<pre class=\"\" lang=\"bash\">sudo iptables-save &gt; file-con-le-nostre-regole<\/pre>\n<p><em>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:<\/em><\/p>\n<pre class=\"lang:default decode:true\">  ethernets:\r\n    eth1:\r\n      dhcp4: false\r\n      dhcp6: false\r\n      optional: true<\/pre>\n<p><em>Eventualmente come ultima spiaggia per evitare sempre quei tempi morti se quello sopra non funziona rimane sempre il comando ( sconsigliato ):<\/em><\/p>\n<pre class=\"lang:default decode:true\">sudo systemctl mask systemd-networkd-wait-online.service<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aggiorno l&#8217;articolo Configurare Ubuntu come gateway adattandolo a Ubuntu 18.04 Per impostare Ubuntu come gateway utilizziamo iptables Innanzi tutto impostiamo l&#8217;inoltro degli IP sudo nano \/etc\/sysctl.conf E impostiamo il valore net.ipv4.ip_forward a 1 ( \u00e8 possibile anche eseguire il veloce comando echo &#8220;1&#8221; &gt; \/proc\/sys\/net\/ipv4\/ip_forward ma poi la modifica si perde al riavvio della macchina [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,3,23],"tags":[270,40,16,39,8,20,5],"_links":{"self":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2104"}],"collection":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/comments?post=2104"}],"version-history":[{"count":10,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2104\/revisions"}],"predecessor-version":[{"id":2114,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/2104\/revisions\/2114"}],"wp:attachment":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/media?parent=2104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/categories?post=2104"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/tags?post=2104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}