Am o problemă: există o cale de rută neașteptată între dispozitivele de rețea virtuală.
Să creăm două perechi independente de dispozitive veth-peer:
$ sudo ip link add veth0 tip veth peer name peer0
$ sudo ip link add veth1 tip veth peer name peer1
Atribuiți adrese dispozitivelor peerX:
$ sudo ip addr add ab:: dev peer0
$ sudo ip addr add cd:: dev peer1
Configurați toate dispozitivele:
$ sudo ip link set dev veth0 up
$ sudo ip link set dev veth1 up
$ sudo ip link set dev peer1 up
$ sudo ip link set dev peer0 up
Verificați dispozitivele:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 ::1/128 scope host
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 02:82:b2:df:b0:58 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 84429sec preferred_lft 84429sec
inet6 fe80::82:b2ff:fedf:b058/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: peer0@veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue stare UP grup implicit qlen 1000
link/ether 6e:8d:c0:7c:02:9c brd ff:ff:ff:ff:ff:ff
inet6 ab::/128 scope global
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::6c8d:c0ff:fe7c:29c/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
4: veth0@peer0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue stare UP grup implicit qlen 1000
link/ether 4e:43:26:75:10:11 brd ff:ff:ff:ff:ff:ff
inet6 fe80::4c43:26ff:fe75:1011/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
5: peer1@veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue stare UP grup implicit qlen 1000
link/ether ea:8c:82:e6:2e:a9 brd ff:ff:ff:ff:ff:ff
inet6 cd::/128 scope global
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::e88c:82ff:fee6:2ea9/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
6: veth1@peer1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue stare UP grup implicit qlen 1000
link/ether da:5a:68:b1:e8:43 brd ff:ff:ff:ff:ff:ff
inet6 fe80::d85a:68ff:feb1:e843/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
si trasee:
$ ip r
implicit prin 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
Acum ascultați peer0 pe portul UDP 2000:
$ nc -u -6 -l ab:: 2000
Și trimiteți pachetul peer1:
$ echo -n abc nc -u -6 -s cd:: ab:: 2000
Și ascultând nc
imprimeuri abc
! Dar De ce? peer0
și peer1
nu sunt conectate în niciun fel. Dacă am înțeles bine, ascult nc
ar trebui să se lege de peer0
si trimiterea nc
ar trebui să se lege de peer1
.