GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare una rete virtuale `veth`

Perché veth funzioni, un'estremità del tunnel deve essere colmata con un'altra interfaccia. Dal momento che vuoi mantenere tutto questo virtuale, puoi collegare l'estremità vm1 del tunnel (vm2 è l'altra estremità del tunnel) con un'interfaccia virtuale di tipo tap, in un bridge chiamato brm. Ora dai gli indirizzi IP a brm e a vm2 (rispettivamente 10.0.0.1 e 10.0.0.2), abilita l'inoltro IPv4 tramite

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

attiva tutte le interfacce e aggiungi un percorso che istruisce il kernel su come raggiungere gli indirizzi IP 10.0.0.0/24. È tutto.

Se desideri creare più coppie, ripeti i passaggi seguenti con sottoreti diverse, ad esempio 10.0.1.0/24, 10.0.2.0/24 e così via. Dal momento che hai abilitato l'inoltro IPv4 e hai aggiunto percorsi appropriati alla tabella di routing del kernel, saranno in grado di parlare tra loro immediatamente.

Inoltre, ricorda che la maggior parte dei comandi che stai utilizzando (brctl, ifconfig,...) sono obsoleti:iproute2 suite ha i comandi per fare tutto questo, vedi sotto il mio uso dell'ip comando.

Questa è una corretta sequenza di comandi per l'uso di interfacce di tipo veth :

creare prima tutte le interfacce richieste,

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

Si noti che non abbiamo richiamato brm e vm2 perché dobbiamo assegnare loro gli indirizzi IP, ma abbiamo richiamato tapm e vm1, che è necessario per includerli nel bridge brm. Ora asservisci le interfacce tapm e vm1 al bridge brm,

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

ora dai gli indirizzi al bridge e alla rimanente interfaccia veth vm2,

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

ora porta in primo piano vm2 e brm,

ip link set brm up
ip link set vm2 up

Non è necessario aggiungere esplicitamente il percorso alla sottorete 10.0.0.0/24, viene generato automaticamente, puoi controllare con ip route show . Ciò si traduce in

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

Puoi anche farlo all'indietro, cioè da vm2 a 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

L'applicazione più utile dei NIC del veth kind è uno spazio dei nomi di rete , che è ciò che viene utilizzato nei contenitori Linux (LXC). Ne inizi uno chiamato nnsm come segue

ip netns add nnsm

quindi trasferiamo vm2 su di esso,

ip link set vm2 netns nnsm 

dotiamo il nuovo spazio dei nomi di rete di un'interfaccia lo (assolutamente necessaria),

ip netns exec nnsm  ip link set dev lo up

consentiamo il NATting nella macchina principale,

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

(se sei connesso a Internet tramite eth0 , altrimenti cambia di conseguenza), avvia una shell nel nuovo spazio dei nomi di rete,

ip netns exec nnsm xterm & 

e ora, se inizi a digitare il nuovo xterm, ti ritroverai in una macchina virtuale separata con indirizzo IP 10.0.0.2, ma puoi raggiungere Internet. Il vantaggio di ciò è che il nuovo spazio dei nomi di rete ha il proprio stack, il che significa, ad esempio, che puoi avviare una VPN al suo interno mentre il resto del tuo PC non sulla VPN. Questo è il congegno su cui si basano gli LXC.

MODIFICA:

Ho commesso un errore, portando l'interfaccia vm2 lo fa cadere e cancella il suo indirizzo. Quindi devi aggiungere questi comandi, dall'interno di xterm:

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

e ora puoi navigare dall'interno di xterm.

Il ip i comandi possono anche essere eseguiti prima dell'xterm con

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. Come configurare un indirizzo IP statico su Debian Linux

  2. Configurazione di rete Proxmox su server dedicato Hetzner

  3. Ad alcune interfacce di rete virtuale è assegnato un indirizzo IP privato, mentre ad alcune è assegnato un indirizzo IP di loopback?

  4. Configura un host virtuale basato sul nome in Apache

  5. Come configurare Linux Etherchannel Bonding per l'interfaccia di rete HA

Come impostare il legame di rete in Ubuntu 20.04

Configurazione del server di documentazione di rete, sistema e datacenter.

Come configurare un host virtuale Nginx

Zentyal come gateway:la configurazione perfetta

Come configurare la configurazione dell'host virtuale Apache (con esempi)

Come configurare le aggiunte e la rete degli ospiti di VirtualBox