(Migriert vonhttps://serverfault.com/questions/895250/setting-up-ubuntu-linux-16-04-as-a-router-within-a-vm)
Ich möchte eine Ubuntu-VM als Router einrichten, auf dematcdSo kann ich ein einzelnes Gerät unter verschiedenen Netzwerkbedingungen gezielt testen. Teile davon funktionieren, aber ich komme nicht weiter damit, dass das Gateway meine Pakete weiterleitet.
Wesentliches, was ich versucht habe:
- Erstellen Sie eine Ubuntu 16.04 VM (
"router"
) auf einem Ubuntu 16.04 Host ("laptop"
) - Zwei Netzwerkkarten für die VM erstellt, beide mit dem einzigen WLAN-Adapter des Hosts verbunden
- Legen Sie die erste Netzwerkkarte (
enp0s3
) so fest, dass sie statisch als Gateway konfiguriert wird, und zwar auf 192.168.0.199. - Stellen Sie die zweite Netzwerkkarte (
enp0s8
) so ein, dass sie automatisch über DHCP konfiguriert wird, beispielsweise auf 192.168.0.100 - Verwendet wurden die folgenden
iptables
Regeln (ausHierUndHier) Anrouter
:iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE iptables -A FORWARD -i enp0s8 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
- Zu testendes Gerät/Host (
"test-device"
) mit der statischen IP-Adresse 192.168.0.77 und der Konfiguration zur Verwendung von 192.168.0.199 als Gateway.
An diesem Punkt kann ich router
von anderen Maschinen im LAN aus, die so konfiguriert sind, dass sie weiterhin den WLAN-Router als Gateway (192.168.0.1) verwenden, einen HTTP-Server erreichen, der sowohl über 192.168.0.199 als auch über 192.168.0.100 läuft.
test-device
kann Hosts im Internet anpingen, kann jedoch keine TCP-Verbindungen zu ihnen aufbauen (schlägt beispielsweise curl www.google.com
mit der Meldung „Ziel nicht erreichbar“ fehl).
Weitere Dinge, die es wert sind, mitgeteilt zu werden:
iptables
Konfiguration auf router
:
root# iptables -L -v
Chain INPUT (policy ACCEPT 12012 packets, 5058K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- enp0s8 enp0s3 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- enp0s3 enp0s8 anywhere anywhere
Chain OUTPUT (policy ACCEPT 3220 packets, 271K bytes)
pkts bytes target prot opt in out source destination
ip route
Einträge
root# ip route
default via 192.168.0.1 dev enp0s3 onlink
169.254.0.0/16 dev enp0s3 scope link metric 1000
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199
192.168.0.0/24 dev enp0s8 proto kernel scope link src 192.168.0.121
Ich weiß nicht, was ich als nächstes tun soll und könnte etwas Hilfe gebrauchen!
Antwort1
Duhabe die IP-Weiterleitung nicht aktiviertim sysctl...
ZuIP-Routing durchführenin Ubuntu Linux:
sudo nano sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
sudo sysctl -p