Agar veth berfungsi, satu ujung terowongan harus dijembatani dengan antarmuka lain. Karena Anda ingin menyimpan ini semua virtual, Anda dapat menjembatani ujung vm1 terowongan (vm2 adalah ujung lain dari terowongan) dengan antarmuka virtual tipe-ketukan, di jembatan yang disebut brm. Sekarang Anda memberikan alamat IP ke brm dan vm2 (masing-masing 10.0.0.1 dan 10.0.0.2), aktifkan penerusan IPv4 melalui
echo 1 > /proc/sys/net/ipv4/ip_forward
tingkatkan semua antarmuka, dan tambahkan rute yang memerintahkan kernel cara mencapai alamat IP 10.0.0.0/24. Itu saja.
Jika Anda ingin membuat lebih banyak pasangan, ulangi langkah-langkah di bawah ini dengan subnet yang berbeda, misalnya 10.0.1.0/24, 10.0.2.0/24, dan seterusnya. Karena Anda mengaktifkan penerusan IPv4 dan menambahkan rute yang sesuai ke tabel routing kernel, mereka akan dapat berbicara satu sama lain segera.
Juga, ingat bahwa sebagian besar perintah yang Anda gunakan (brctl, ifconfig, ...) sudah usang: suite iproute2 memiliki perintah untuk melakukan semua ini, lihat di bawah ini saya menggunakan perintah ip .
Ini adalah urutan perintah yang benar untuk penggunaan antarmuka tipe veth :
pertama buat semua antarmuka yang diperlukan,
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
Perhatikan kami tidak memunculkan brm dan vm2 karena kami harus menetapkannya alamat IP, tetapi kami memunculkan tapm dan vm1, yang perlu untuk memasukkannya ke dalam brm jembatan. Sekarang memperbudak antarmuka tapm dan vm1 ke jembatan brm,
ip link set tapm master brm
ip link set vm1 master brm
sekarang berikan alamat ke bridge dan ke antarmuka veth2 veth yang tersisa,
ip addr add 10.0.0.1/24 dev brm
ip addr add 10.0.0.2/24 dev vm2
sekarang bawa vm2 dan brm ke atas,
ip link set brm up
ip link set vm2 up
Tidak perlu menambahkan rute ke subnet 10.0.0.0/24 secara eksplisit, itu dihasilkan secara otomatis, Anda dapat memeriksa dengan ip route show . Ini menghasilkan
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
Anda juga dapat melakukannya mundur, yaitu dari vm2 kembali ke 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
Aplikasi NIC yang paling berguna dari jenis Veth adalah namespace jaringan , yang digunakan dalam wadah Linux (LXC). Anda memulai satu yang disebut nnsm sebagai berikut
ip netns add nnsm
maka kami mentransfer vm2 ke sana,
ip link set vm2 netns nnsm
kami memberkati namespace jaringan baru dengan antarmuka lo (benar-benar diperlukan),
ip netns exec nnsm ip link set dev lo up
kami mengizinkan NATting di mesin utama,
iptables -t nat -A POSTROUTING -o brm -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(jika Anda terhubung ke Internet melalui eth0 , jika tidak ubah sesuai), mulai shell di namespace jaringan baru,
ip netns exec nnsm xterm &
dan sekarang, jika Anda mulai mengetik xterm baru, Anda akan menemukan Anda berada di mesin virtual yang terpisah dengan alamat IP 10.0.0.2, tetapi Anda dapat menjangkau Internet. Keuntungan dari ini adalah bahwa namespace jaringan baru memiliki tumpukan sendiri, yang berarti, misalnya, Anda dapat memulai VPN di dalamnya sementara sisa komputer Anda tidak di VPN. Ini adalah alat yang mendasari LXC.
EDIT:
Saya membuat kesalahan, membawa antarmuka vm2 membawanya turun dan membersihkan alamatnya. Jadi, Anda perlu menambahkan perintah-perintah ini, dari dalam 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
dan sekarang Anda dapat menavigasi dari dalam xterm.
The ip
perintah juga dapat dilakukan sebelum xterm dengan
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
br0
itu sendiri?