https://github.com/lemonhall/vagrant_docker/blob/main/README_ip_v6.md
将近20个小时的瞎折腾
结果最后其实非常简单

一台物理机,一个虚拟机(vagrant管理的fedora36),一个docker,一个物理的路由
1、拿地址
让Host宿主机要有一个与物理路由器同网段的地址,这样,它才能被路由器get到
方法是,桥接网络,vm里面的,桥接把我坑了4-5个小时的地方其实就一个
【vb的桥接,对wifi的那个nic支持不好,具体原因可以深化】
所以,你需要一个有限cable的网络nic去桥接
好了,这样host就拿到一个192.168.50.xxx的ip地址了,可以在路由器里看到它了
2、配路由
每一个Host机器上的容器,其实都可以有一个子网,比如172.18.xx.xx,255.255.0.0
那么,不需要去看网上大多数流传的那种静态路由的配置方式,因为那样的话,每台主机都要配静态路由表,太累了,路由器有这个功能的
如下,有几个主机,配置几个子网就行了,把host主机视为一个路由器就可以理解了

3、主机上侦听
sudo tcpdump -n -i any icmp
这一步卡了我很久
就看了好多文章,静下心来还看了很多docker默认的iptables的规则问题,等等等等
我的问题在于,清空了iptables之后,还是只能ping 成功 docker0的那个172.17.0.1
最后忽然用tcpdump一层层排查后才意识到,还是有什么东西挡着我
sudo systemctl disable --now firewalld
最后才明白,fedora和centos最新的版本做了一个新的防火墙,干掉就完了,内网搞这些干啥
4、最后成功

5、遗留
似乎访问外网不成功,稍后看一下怎么回事
===========
容器里面出不去
1、vagrant的网络配置里,其实可以把默认路由干掉
2、可以给docker0上加路由规则
sudo route add -n 0.0.0.0/24 gw 192.168.50.1 dev docker0
sudo route add default gw 192.168.50.1 docker0
给docker0加不上这个路由啊
算了
sudo route del default gw 10.0.2.2 eth0
删掉eth0那个碍事的路由也行
本来这个可以在vagranfile里解决的,行吧
然后容器网络正常了