Einzelnen Beitrag anzeigen

Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: Debian-KVM: eigenes abgeschottetes Subnetz für VMs

  Alt 5. Dez 2010, 02:07
Code:
sudo iptables -n -v -L -t nat # NAT Tabelle anzeigen
sudo iptables -n -v -L # Standardtabellen zeigen
Beispiel:
(Hinweis, die Routen und netfilter-Regeln unten wurden durch KVM automatisch erstellt, mit default.xml)

Code:
$ sudo iptables -n -v -L -t nat
Chain PREROUTING (policy ACCEPT ... packets, ... bytes)
 pkts bytes target    prot opt in    out    source              destination

Chain POSTROUTING (policy ACCEPT ... packets, ... bytes)
 pkts bytes target    prot opt in    out    source              destination
    0     0 MASQUERADE tcp --  *      *       192.168.x.0/24    !192.168.x.0/24    masq ports: 1024-65535
    0     0 MASQUERADE udp --  *      *       192.168.x.0/24    !192.168.x.0/24    masq ports: 1024-65535
    0     0 MASQUERADE all --  *      *       192.168.x.0/24    !192.168.x.0/24

Chain OUTPUT (policy ACCEPT ... packets, ... bytes)
 pkts bytes target    prot opt in    out    source              destination
Auf dem besagten Rechner läuft KVM (es ist also der Host). Wie du sehen kannst, wird für die drei Protokolle (bzw. zwei plus Pseudoprotokoll all) festgelegt, daß sie für ausgehende Anforderungen ge-NAT-tet werden. Sprich, wenn sie nicht untereinander schwatzen wollen (im eigenen Subnetz), handelt es sich um so eine ausgehende Anforderung und daher wird die IP maskiert (nach außen erscheint ein Paket der VM als Paket des Hosts).

Code:
$ sudo ip route
[...]
192.168.x.0/24 dev virbr0  proto kernel scope link src 192.168.x.1
[...]
Die Route sagt nur daß für das gezeigte Netzwerk (192.168.x.0/24) die Bridge zum Einsatz kommen soll.

Bridged und NAT ist eigentlich eine unsinnige Unterscheidung (siehe deine Fragestellung). Mit entsprechenden Routen und netfilter-Regeln kannste SNAT/DNAT (oder volles NAT und PNAT) machen oder eben an eine andere IP durchrouten. Die virbr0 Bridge wurde im Übrigen automatisch von KVM erstellt (default.xml).

Ich habe bei mir bspw. 4 "externe" IPs, die hinter dem Host stecken. Intern habe ich für jede IP eine eigene Bridge und ein Subnetz reserviert (das Subnetz dient dabei anderen Zwecken). Einerlei, die Routen sind so gesetzt, daß der Host weiß, daß eine Anforderung an eine dieser externen IPs hinter dem jeweiligen internen Subnetz liegt. Dazu kommt noch das Subnetz welches sich KVM mit virbr0 grabscht. Die vier VMs welche an die externen IPs angebunden sind, werden auch an dieses Netz angebunden für internen Traffic (also bspw. von Host zu VMs). Außerdem verstecke ich in diesem Netz noch weitere Hosts deren einzelne Dienste ich über PNAT-Regeln (in Netfilter) zu einer der externen IPs (Host hat auch eine) durchreiche.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad ( 5. Dez 2010 um 06:41 Uhr)
  Mit Zitat antworten Zitat