У меня есть гипервизор (Firecracker), использующий плагин bridge cni с tc-redirect-tap (https://github.com/firecracker-microvm/firecracker-go-sdk/tree/master/cni/cmd/tc-redirect-tap). При настройке сети он создает устройство ответвления и подключается к мосту cni. Трафик от гостя перенаправляется vmm на устройство Tap и работает, но если я попытаюсь использовать сеть из процесса vmm, я получаю «Нет маршрута к хосту».
Вот результат ip a
из пространства имен:
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: veth0@if108: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 32:9d:2f:c8:ab:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.1.5/24 brd 192.168.1.255 scope global veth0
valid_lft forever preferred_lft forever
inet6 fe80::309d:2fff:fec8:ab42/64 scope link
valid_lft forever preferred_lft forever
4: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 6e:6c:4c:97:20:67 brd ff:ff:ff:ff:ff:ff
inet6 fe80::6c6c:4cff:fe97:2067/64 scope link
valid_lft forever preferred_lft forever
С участием ip routes
будучи:
192.168.1.0/24 dev veth0 proto kernel scope link src 192.168.1.5
На хосте это мост:
104: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 8e:4b:d6:73:9f:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global cni0
valid_lft forever preferred_lft forever
inet6 fe80::8c4b:d6ff:fe73:9f3c/64 scope link
valid_lft forever preferred_lft forever
И CNI conf:
{
"name": "fcnet",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "bridge",
"name": "fcnet",
"isGateway": true,
"ipMasq": false,
"ipam": {
"type": "host-local",
"subnet": "192.168.1.0/24"
}
},
{
"type": "portmap",
"snat": true,
"capabilities": {
"portMappings": true
}
},
{
"type": "tc-redirect-tap"
}
]
}
Я пробовал вручную пинговать снаружи и устанавливать разные маршруты, но безуспешно, например:
sudo ip netns exec 286d1ad1-32c2-4dcf-b55f-306a55849603 wget 172.217.14.164:80
--2020-03-10 19:42:43-- http://172.217.14.164/
Connecting to 172.217.14.164:80... failed: Network is unreachable.
Есть ли способ заставить это (по крайней мере, команду wget выше) работать?