GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit virtuální síť `veth`

Aby veth fungoval, musí být jeden konec tunelu přemostěn jiným rozhraním. Protože toto vše chcete zachovat virtuální, můžete přemostit konec tunelu vm1 (vm2 je druhý konec tunelu) pomocí virtuálního rozhraní typu tap v mostě zvaném brm. Nyní přidělíte IP adresy brm a vm2 (10.0.0.1 a 10.0.0.2), povolíte přesměrování IPv4 pomocí

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

aktivujte všechna rozhraní a přidejte cestu, která kernel instruuje, jak dosáhnout IP adres 10.0.0.0/24. To je vše.

Pokud chcete vytvořit více párů, opakujte kroky níže s různými podsítěmi, například 10.0.1.0/24, 10.0.2.0/24 atd. Protože jste povolili předávání IPv4 a přidali příslušné cesty do směrovací tabulky jádra, budou spolu moci okamžitě mluvit.

Pamatujte také, že většina příkazů, které používáte (brctl, ifconfig,...), je zastaralá:iproute2 Suite má příkazy k tomu všemu, viz níže moje použití ip příkaz.

Toto je správná posloupnost příkazů pro použití rozhraní typu veth :

nejprve vytvořte všechna požadovaná rozhraní,

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

Všimněte si, že jsme nevyvolali brm a vm2, protože jim musíme přiřadit IP adresy, ale vyvolali jsme tapm a vm1, které je nutné zahrnout do mostu brm. Nyní zotročte rozhraní tapm a vm1 na most brm,

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

nyní zadejte adresy mostu a zbývajícímu rozhraní veth vm2,

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

nyní přiveďte vm2 a brm up,

ip link set brm up
ip link set vm2 up

Není třeba přidávat trasu do podsítě 10.0.0.0/24 explicitně, je automaticky generována, můžete zkontrolovat pomocí ip route show . Výsledkem je

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

Můžete to udělat i pozpátku, tj. z vm2 zpět do 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

Nejužitečnější aplikace NIC z veth druh je názvový prostor sítě , což je to, co se používá v kontejnerech Linux (LXC). Spustíte program s názvem nnsm následovně

ip netns add nnsm

pak do něj přeneseme vm2,

ip link set vm2 netns nnsm 

vybavíme nový síťový jmenný prostor rozhraním lo (nezbytně nutné),

ip netns exec nnsm  ip link set dev lo up

povolujeme NATting v hlavním počítači,

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

(pokud jste připojeni k internetu přes eth0 , jinak se odpovídajícím způsobem změňte), spusťte shell v novém síťovém jmenném prostoru

ip netns exec nnsm xterm & 

a teď, když začnete psát nový xterm, zjistíte, že jste v samostatném virtuálním počítači s IP adresou 10.0.0.2, ale můžete se dostat na internet. Výhodou toho je, že nový síťový jmenný prostor má svůj vlastní zásobník, což znamená, že v něm například můžete spustit VPN, zatímco zbytek vašeho počítače ne na VPN. Na tom jsou založeny LXC.

EDIT:

Udělal jsem chybu, uvedení rozhraní vm2 jej stáhne a vymaže jeho adresu. Musíte tedy přidat tyto příkazy z 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

a nyní můžete procházet z xterm.

ip příkazy lze také provést před xterm pomocí

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. Jak nastavit statickou IP adresu na Debian Linuxu

  2. Nastavení sítě Proxmox na dedikovaném serveru Hetzner

  3. Je některému rozhraní virtuální sítě přiřazena soukromá IP adresa, zatímco některým je přiřazena IP adresa zpětné smyčky?

  1. Nastavte virtuálního hostitele založeného na názvu v Apache

  2. Jak nastavit Linux Etherchannel Bonding pro síťové rozhraní HA

  3. Jak se připojit k místnímu virtuálnímu počítači hyper-v přes SSH?

  1. Jak nakonfigurovat virtuální síťové rozhraní na Redhat 7 Linux

  2. Jak nakonfigurovat virtuální síťové rozhraní na RHEL 8 / CentOS 8

  3. Nastavení bezdrátového rozhraní na Ubuntu