Condivisione Internet su Linux

Condivisione

Un piccolo script di shell per chi, come me, non si ricorda mai come diavolo si abilita la condivisione Internet sotto Linux — anche nota come NAT, source NAT, masquerading, etc. Così i vostri amici, quando verranno a casa vostra, non dovranno più attendere che razzoliate mezz’ora sul sito di netfilter.

Salvatelo sulla vostra Linux box come /usr/local/bin/masquit. Poi attivate i permessi di esecuzione con

$ sudo chmod +x /usr/local/bin/masquit

A questo punto, per attivare la condivisone, lanciatelo come

$ sudo masquit on ppp0

dove ppp0 è l’interfaccia esterna (sostituitelo con il nome della vostra interfaccia esterna). Per disattivarla, invece, va lanciato così:

$ sudo masquit off

NOTA: trattasi di soluzione provvisoria, che non sopravvive ai reboot. Può andar bene se i vostri amici vi fanno visita non più di una o due volte la settimana. Se vi occorre qualcosa di più “definitivo” occorre mettere mano agli script di avvio (per Ubuntu, leggi qua).

masquit

#!/bin/bash
#
# Copyright (C) 2008 Alessandro Morgantini
# https://gpz500.wordpress.com/
#
# Released under the terms of GPL2:
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

# Default interface
INTERFACE=ppp0

# Check if we are in Linux
if [ "$(uname)" != Linux ]; then
	echo "Sorry, this command is intended only for Linux."
	exit 2
fi

# Check if the script is run as root
if [ $UID -ne 0 ]; then
	echo "Sorry, you have to be root to run this command!"
	exit 1
fi

# Set the interface
if [ x$2 != x ]; then
	INTERFACE=$2
fi

case $1 in
	"")
		iptables -v -t nat -L POSTROUTING
		echo -n "IPv4 forwarding: "
		cat /proc/sys/net/ipv4/ip_forward
		;;
	on)
		if iptables -t nat -A POSTROUTING -o $INTERFACE -j MASQUERADE && echo 1 >/proc/sys/net/ipv4/ip_forward; then
			echo Masquerading enabled on interface $INTERFACE
		else
			echo Error during setup of masquerading on interface $INTERFACE
		fi
		;;

	off)
		if echo 0 >/proc/sys/net/ipv4/ip_forward && iptables -t nat -F; then
			echo Masquerading disabled
		else
			echo Error during the disabling of masquerading
		fi
		;;

	*)
		echo "Usage: $(basename $0) [on [<interface>]| off]"
		echo "If the interface is not specified, the deafult will be ppp0."
		exit 1
		;;
esac
Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...