GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man ein virtuelles `veth`-Netzwerk einrichtet

Damit Veth funktioniert, muss ein Ende des Tunnels mit einer anderen Schnittstelle überbrückt werden. Da Sie dies alles virtuell halten möchten, können Sie das vm1-Ende des Tunnels (vm2 ist das andere Ende des Tunnels) mit einer virtuellen Schnittstelle vom Tap-Typ überbrücken, in einer Brücke namens brm. Jetzt geben Sie brm und vm2 IP-Adressen (10.0.0.1 bzw. 10.0.0.2) und aktivieren die IPv4-Weiterleitung mit

echo 1 > /proc/sys/net/ipv4/ip_forward

Bringen Sie alle Schnittstellen hoch und fügen Sie eine Route hinzu, die den Kernel anweist, wie er die IP-Adressen 10.0.0.0/24 erreicht. Das ist alles.

Wenn Sie weitere Paare erstellen möchten, wiederholen Sie die folgenden Schritte mit verschiedenen Subnetzen, z. B. 10.0.1.0/24, 10.0.2.0/24 usw. Da Sie die IPv4-Weiterleitung aktiviert und der Kernel-Routing-Tabelle entsprechende Routen hinzugefügt haben, können sie sofort miteinander sprechen.

Denken Sie auch daran, dass die meisten der von Ihnen verwendeten Befehle (brctl, ifconfig, ...) veraltet sind:die iproute2 Suite verfügt über Befehle, um all dies zu tun, siehe unten meine Verwendung der ip Befehl.

Dies ist eine korrekte Befehlsfolge für die Verwendung von Schnittstellen vom Typ veth :

Erstellen Sie zuerst alle erforderlichen Schnittstellen,

ip link add dev vm1 type veth peer name vm2
ip link set dev vm1 up
ip tuntap add tapm mode tap
ip link set dev tapm up
ip link add brm type bridge

Beachten Sie, dass wir brm und vm2 nicht aufgerufen haben, weil wir ihnen IP-Adressen zuweisen müssen, aber wir haben tapm und vm1 aufgerufen, was notwendig ist, um sie in die Bridge brm aufzunehmen. Versklaven Sie nun die Schnittstellen tapm und vm1 an die Bridge brm,

ip link set tapm master brm
ip link set vm1 master brm

Geben Sie nun Adressen an die Brücke und an die verbleibende Veth-Schnittstelle vm2,

ip addr add 10.0.0.1/24 dev brm
ip addr add 10.0.0.2/24 dev vm2

Bringen Sie jetzt vm2 und brm hoch,

ip link set brm up
ip link set vm2 up

Es ist nicht notwendig, die Route explizit dem Subnetz 10.0.0.0/24 hinzuzufügen, sie wird automatisch generiert, Sie können dies mit ip route show überprüfen . Dies führt zu

ping -c1 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.035 m

--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.035/0.035/0.035/0.000 ms

Sie können es auch rückwärts machen, d.h. von vm2 zurück zu brm:

ping -I 10.0.0.2 -c1 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.2 : 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms

Die nützlichste Anwendung von NICs der veth kind ist ein Netzwerk-Namespace , was in Linux-Containern (LXC) verwendet wird. Eine namens nnsm starten Sie wie folgt

ip netns add nnsm

dann übertragen wir vm2 darauf,

ip link set vm2 netns nnsm 

Wir statten den neuen Netzwerk-Namensraum mit einem lo-Interface aus (absolut notwendig),

ip netns exec nnsm  ip link set dev lo up

wir erlauben NATting in der Hauptmaschine,

iptables -t nat -A POSTROUTING -o brm -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

(wenn Sie über eth0 mit dem Internet verbunden sind , andernfalls entsprechend ändern), starten Sie eine Shell im neuen Netzwerk-Namensraum,

ip netns exec nnsm xterm & 

und wenn Sie jetzt beginnen, das neue xterm einzugeben, werden Sie feststellen, dass Sie sich in einer separaten virtuellen Maschine mit der IP-Adresse 10.0.0.2 befinden, aber Sie können das Internet erreichen. Dies hat den Vorteil, dass der neue Netzwerk-Namespace einen eigenen Stack hat, was bedeutet, dass Sie darin beispielsweise ein VPN starten können, während der Rest Ihres PCs nicht ist auf dem VPN. Dies ist die Vorrichtung, auf der LXCs basieren.

BEARBEITEN:

Ich habe einen Fehler gemacht, indem ich die vm2-Schnittstelle heruntergefahren habe und ihre Adresse gelöscht habe. Daher müssen Sie diese Befehle innerhalb von xterm hinzufügen:

ip addr add 10.0.0.2/24 dev vm2
ip link set dev  vm2 up
ip route add default via 10.0.0.1
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

und jetzt können Sie innerhalb von xterm navigieren.

Der ip Befehle können auch vor dem xterm mit

ausgeführt werden
ip -netns nnsm addr add 10.0.0.2/24 dev vm2
ip -netns nnsm link set dev vm2 up
ip -netns nnsm route add default via 10.0.0.1

Linux
  1. So richten Sie eine statische IP-Adresse unter Debian Linux ein

  2. Proxmox Network Setup auf Hetzner Dedicated Server

  3. Wird einigen virtuellen Netzwerkschnittstellen eine private IP-Adresse zugewiesen, während anderen eine Loopback-IP-Adresse zugewiesen wird?

  4. Richten Sie einen namensbasierten virtuellen Host in Apache ein

  5. So richten Sie Linux Etherchannel Bonding für die Netzwerkschnittstelle HA ein

So richten Sie die Netzwerkbindung in Ubuntu 20.04 ein

Richten Sie den Dokumentationsserver für Netzwerk, System und Rechenzentrum ein.

So richten Sie einen virtuellen Nginx-Host ein

Zentyal als Gateway:Das perfekte Setup

So richten Sie die Apache Virtual Host-Konfiguration ein (mit Beispielen)

So richten Sie VirtualBox Guest Additions und Network ein