Mein Ubuntu 12.04 (präziser) Laptop verfügt über drei Netzwerkschnittstellen:
eth0
: Kabelschnittstelle manchmal mit dem Internet verbundenwlan0
: Drahtlose Schnittstelle manchmal mit dem Internet verbundenvboxnet0
: Kabelgebundene Schnittstelle (eigentlich eine virtuelle VirtualBox-Schnittstelle), die mit einem anderen Computer verbunden ist (tatsächlich eine virtuelle VirtualBox-Maschine mit Netzwerk im Nur-Host-Modus)
Ich möchte iptables
NAT / IP-Maskerading einrichten, um die Internetverbindung (die verkabelt ist, wenn beide aktiv sind) mit dem anderen Computer zu teilen.
Folgendes funktioniert, wenn es angeschlossen eth0
ist:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE &&
sudo iptables -A FORWARD -i eth0 -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o eth0 -j ACCEPT
Wenn ich von kabelgebunden zu kabellos wechsle, funktioniert dies offensichtlich nicht mehr.
Ich habe es versucht:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o '!vboxnet0' -j MASQUERADE &&
sudo iptables -A FORWARD -i '!vboxnet0' -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o '!vboxnet0' -j ACCEPT
aber es hat nicht funktioniert. Ich könnte versuchen, einige Network Manager-Skripte zu iptables
erstellen , um die Regeln zu ändern , wenn eine Schnittstelle nach oben oder unten geht, aber ich dachte, es wäre möglich, ohne durch solche Rahmen zu springen.
Irgendwelche Vorschläge?
quelle
$MASK
sein$MARK
?