otttto
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
Hallo zusammen,
ich hab auf meinem Ubuntu18.04-Notebook per "Virtuelle Maschinenverwaltung" ein Windows als Gastsystem lokal installiert. Das Win7 läuft, ich bekomme dieses aber nicht, wie gewünscht, ins Netzwerk. Bei den NIC-Einstellungen zum Gastsystem hab ich bei "Netzwerkquelle" <Name des gemeinsam verwendeten Gerätes angeben> und bei "Brückenname" <virbr0> eingetragen.
Die virbr0 gibt es als Brücke im Netzwerkmanager mit der IP: 192.168.122.1 .
Wenn ich im Win-Gastsystem "IP-Adresse automatisch beziehen" eintrage, bekommt dieses eine IP-Adresse aus dem 192.168.122.x -Bereich von der virbr0.
Ich möchte aber, dass der Gast mit einer festen IP-Adresse, sowie der Host ins Netzwerk geht. Bei einem UbuntuServer16.04 hab ich das umgesetzt, in dem ich, ohne NetzwerkManager, eine Brücke in der /etc/network/interfaces eingerichtet hab. Bei dem beschriebenen Notebook würde ich aber ungern auf den NetzwerkManager verzichten. Kann man mein Vorhaben mit der vorgegebenen Brücke oder einer neu zu erstellenden umsetzen?
Danke.
Gruß.
ottto
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
Nutze einfach für die virbr0 ein eigenes, internes Netz. Anschließend noch ip_forward und MASQUERADE konfigurieren, und dann wirst du über die Host-IP genattet:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -nvL -A POSTROUTING -o eth0 -j MASQUERADE
Statt eth0 müsstest du natürlich das Host-Interface nehmen. Und alles bootfest eintragen, das lässt sich ergoogeln.
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
misterunknown schrieb: Nutze einfach für die virbr0 ein eigenes, internes Netz. Anschließend noch ip_forward und MASQUERADE konfigurieren, und dann wirst du über die Host-IP genattet:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -nvL -A POSTROUTING -o eth0 -j MASQUERADE
Statt eth0 müsstest du natürlich das Host-Interface nehmen. Und alles bootfest eintragen, das lässt sich ergoogeln.
Hallo misterunknown, sorry, ich steh da ziemlich auf dem Schlauch ....
für mein Verständnis: Internes Netz: für das interne Netz könnte ich dann das, schon vorhandene, 192.168.122.x nutzen. Die virbr0 (192.168.122.1) ist ja schon vom Gastsystem erreichbar. Im Gastsystem würde ich dann noch eine passende feste IP-Adresse mit dem Gateway 192.168.122.1 vergeben. Damit wäre das interne Netz fertig, oder? sysctl -w net.ipv4.ip_forward=1: damit wird die IP-Weiterleitung zwischen dem internen Netz und dem eigentlichen Netzwerk eingeschaltet. Die Netze brauchen logisch nicht zusammen zu passen (z.B. intern: 192.168.122.0/24 und extern: 172.16.0.0/16), richtig? iptables -t nat -nvL -A POSTROUTING -o eth0 -j MASQUERADE für was ist der Befehl? Danke.
Gruß.
otttto
|
Mokkujin
Anmeldungsdatum: 2. Mai 2008
Beiträge: 389
Wohnort: Hannover
|
iptables – hinzufügen zur Chain nat
-t nat -nvL
-n, --numeric = Numeric output. IP addresses and port numbers will be printed in numeric format.
-v, --verbose = Verbose output. This option makes the list command show the interface name, the rule options (if any), and the TOS masks.
-L, --list [chain] List all rules in the selected chain. If no chain is selected, all chains are listed.
-A POSTROUTING -A, --append = chain rule-specification
Je nach Tabelle gibt es vorgegebene Regelketten (Chains), die bestimmen, welche Regel zum Einsatz kommt. Die Regelkette INPUT behandelt eingehende Pakete an lokale Prozesse, OUTPUT kümmert sich um solche von lokalen Prozessen nach außen. Das Weiterleiten von Paketen regelt die Kette FORWARD. Vor dem Routing nimmt unter Umständen PREROUTING Einfluss auf die Pakete, und POSTROUTING ist die letzte Eingriffsmöglichkeit, bevor diese auf die Reise gehen.
-o eth0
-o, --out-interface name
-j MASQUERADE -j, --jump target = This specifies the target of the rule
Das Ziel MASQUERADE schreibt IP-Adresse und Port eines Pakets um, und das Ziel LOG schreibt den Zugriff in eine Protokolldatei. Je nach Ziel beendet Iptables das Abarbeiten der Regelkette (ACCEPT, DROP, REJECT, MASQUERADE) oder setzt es fort (LOG). MASQUERADE ist auch unter "Port and Address Translation" bekannt
Quelle : https://www.linux-community.de/ausgaben/linuxuser/2007/03/netzwerkgrundlagen-fuer-die-systemanalyse/3/ https://www.cyberciti.biz/faq/howto-iptables-show-nat-rules/
|
Mokkujin
Anmeldungsdatum: 2. Mai 2008
Beiträge: 389
Wohnort: Hannover
|
Was gibt denn dein iptables aus ? Sind da schon einige gesetzt ? Ich hatte das auch schon mit Hypervisior und Docker auf einer Kiste das die Bridge das nicht zugelassen hat. | iptables -A FORWARD -i br1 -o br1 -j ACCEPT
|
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
otttto schrieb: Internes Netz: für das interne Netz könnte ich dann das, schon vorhandene, 192.168.122.x nutzen. Die virbr0 (192.168.122.1) ist ja schon vom Gastsystem erreichbar. Im Gastsystem würde ich dann noch eine passende feste IP-Adresse mit dem Gateway 192.168.122.1 vergeben. Damit wäre das interne Netz fertig, oder?
Ja, ich hatte das so verstanden, dass der Host selbst in diesem Netz hängt. Wenn dieses Netz wirklich nur zwischen Host und VMs existiert wäre das richtig. Ich vermute, dass der NetworkManager innerhalb des Netzes IPs per DHCP verteilt. Wenn du das nicht willst, kannst du auch einfach auf den VMs feste IPs verteilen.
sysctl -w net.ipv4.ip_forward=1: damit wird die IP-Weiterleitung zwischen dem internen Netz und dem eigentlichen Netzwerk eingeschaltet. Die Netze brauchen logisch nicht zusammen zu passen (z.B. intern: 192.168.122.0/24 und extern: 172.16.0.0/16), richtig?
Korrekt.
iptables -t nat -nvL -A POSTROUTING -o eth0 -j MASQUERADE für was ist der Befehl?
Wie Mokkujin schrieb werden damit alle VMs hinter der Host-IP versteckt (maskiert), wenn sie ins externe Netzwerk gehen. Das funktioniert dann ähnlich wie die Maskierung eines privaten Heimnetzes in Richtung Internet über das DSL-Modem.
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
Funktioniert!
ich komme vom Gastsystem in das externe Netz. Gibt es eine Möglichkeit den Gast vom externen Netz (172.16.0.0) zu erreichen? z.B. per RDP.
Wohl eher nicht, da sich der Gast mit der internen IP-Adresse 192.168.122.x hinter dem Host versteckt oder sehe ich das falsch?
Vielen Dank. Gruß. otttto
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
otttto schrieb: Gibt es eine Möglichkeit den Gast vom externen Netz (172.16.0.0) zu erreichen? z.B. per RDP.
Wohl eher nicht, da sich der Gast mit der internen IP-Adresse 192.168.122.x hinter dem Host versteckt oder sehe ich das falsch?
Grundsätzlich nicht, das ist richtig. Du kannst allerdings für verschiedene Ports Weiterleitungen vom Host einrichten:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.x:3389
Wenn du mehrere Gäste mit RDP hast, musst du natürlich verschiedene Host-Ports zum weiterleiten nutzen.
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
misterunknown schrieb: ....
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.x:3389
Die eth0 hab ich durch den Namen der Netzwerkkarte enp0s25 ersetzt. Anstelle von 192.168.122.x hab ich die IP-Adresse vom Client 192.168.122.147 eingetragen.
Der Befehl wird auch ohne Meldung ausgeführt.
Mit iptables -L kann ich aber keinen Hinweis auf den Eintrag finden. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:bootpc
|
Muss aus der Liste erst was entfernt werden?
Danke. Gruß.
otttto
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
otttto schrieb: Mit iptables -L kann ich aber keinen Hinweis auf den Eintrag finden.
Da musst du in der NAT-Tabelle gucken:
iptables -t nat -L
Muss aus der Liste erst was entfernt werden?
Muss nicht, aber du kannst prinzipiell alle Regeln entfernen, die etwas erlauben, weil die Policy der Chains ja auf ACCEPT steht. Das heißt alle Pakete, die nicht auf eine Regel matchen werden sowieso akzeptiert.
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
misterunknown schrieb: otttto schrieb: Mit iptables -L kann ich aber keinen Hinweis auf den Eintrag finden.
Da musst du in der NAT-Tabelle gucken:
iptables -t nat -L
Muss aus der Liste erst was entfernt werden?
Muss nicht, aber du kannst prinzipiell alle Regeln entfernen, die etwas erlauben, weil die Policy der Chains ja auf ACCEPT steht. Das heißt alle Pakete, die nicht auf eine Regel matchen werden sowieso akzeptiert.
Hier noch die Ausgabe von iptables -t nat -L
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:3389 to:192.168.122.147:3389
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
RETURN all -- 192.168.122.0/24 base-address.mcast.net/24
RETURN all -- 192.168.122.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
|
Den RDP-Aufruf versuche ich mit der IP-Adresse vom Host gefolgt von :3389 . Die Win-Firewall auf dem Gast ist aus.
Hast Du eine Idee, was da noch falsch sein könnte? Danke. Gruß.
otttto
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
Zeig mal
iptables -t nat -nvL
dann sieht man auch wie viele Pakete durch die entsprechenden Regeln betroffen waren.
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
misterunknown schrieb: Zeig mal
iptables -t nat -nvL
dann sieht man auch wie viele Pakete durch die entsprechenden Regeln betroffen waren.
hier die Ausgabe:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | Chain PREROUTING (policy ACCEPT 17456 packets, 1202K bytes)
pkts bytes target prot opt in out source destination
3 152 DNAT tcp -- enp0s25 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3389 to:192.168.122.147:3389
Chain INPUT (policy ACCEPT 179 packets, 28041 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 170 packets, 15155 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 170 packets, 15155 bytes)
pkts bytes target prot opt in out source destination
18 1871 RETURN all -- * * 192.168.122.0/24 224.0.0.0/24
0 0 RETURN all -- * * 192.168.122.0/24 255.255.255.255
7 364 MASQUERADE tcp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
0 0 MASQUERADE udp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
3 192 MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24
|
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
Also von der Regel für das Port-Forwarding waren bereits 3 Pakete betroffen, daher gehe ich davon aus, dass diese Richtung funktioniert. Eventuell stimmt in der anderen Richtung etwas noch nicht. Funktioniert das MASQUERADE korrekt? Hast du die Möglichkeit per tcpdump Pakete mitzuschneiden?
|
otttto
(Themenstarter)
Anmeldungsdatum: 16. Februar 2017
Beiträge: 66
|
misterunknown schrieb: Also von der Regel für das Port-Forwarding waren bereits 3 Pakete betroffen, daher gehe ich davon aus, dass diese Richtung funktioniert. Eventuell stimmt in der anderen Richtung etwas noch nicht. Funktioniert das MASQUERADE korrekt? Hast du die Möglichkeit per tcpdump Pakete mitzuschneiden?
tcpdump ... muss ich mir anschauen.
Ich hab jetzt noch mal den Befehl zur MASQUERADE, von oben, aufgerufen. "iptables -t nat -nvL -A POSTROUTING -o eth0 -j MASQUERADE"
Da kommt jetzt gleich: iptables v1.6.1: Cannot use -A with -L
|