网上有很多教程了,但这几天试下来,ipv4 NAT 没有问题,但独立ipv6一直不好用,有说直接 PVE 直接加一块儿 vmbr0 的网卡,然后就被HZ滥用警告了2333,最终沿袭这位老哥的思路https://www.liujason.com/article/477.html,终于搞定了 ipv6 的问题,目前使用一切正常。
下面贴一下母鸡的网络架构以及一些具体配置
母鸡网络基本架构
enp9s0:物理网卡,空
vmbr0:物理网卡桥接——公网IPv4+公网IPv6
vmbr1:物理vLAN网卡桥接——内网IPV4+公网IPv6(无gateway)
下面是网卡具体配置
- ### Hetzner Online GmbH installimage
- source /etc/network/interfaces.d/*
- auto lo
- iface lo inet loopback
- iface lo inet6 loopback
- auto enp9s0
- iface enp9s0 inet manual
- # post-up /sbin/ethtool -K enp9s0 tx off rx off
- iface enp9s0 inet6 manual
- auto vmbr0
- iface vmbr0 inet static
- address 母鸡ip
- netmask 子网掩码
- gateway 网关ip
- pointopoint 同上网关ip
- hwaddress ether MAC地址
- bridge_ports enp9s0
- bridge_stp off
- bridge_fd 0
- bridge_maxwait 0
- # post-up /sbin/ethtool -K vmbr0 tx off rx off
- iface vmbr0 inet6 static
- address 母鸡v6地址 #例子 2a01:abc:abc:abc::2
- netmask 64 #64或者128,看你之前的网络参数
- gateway fe80::1 #网关
- bridge_ports enp9s0
- bridge_stp off
- bridge_fd 0
- up ip -6 route del 2a01:abc:abc:abc::/64 dev vmbr0 #这个是你母鸡ipv6的网段,含义说明下面有写
- auto vmbr1
- iface vmbr1 inet static
- address 192.168.1.1
- netmask 255.255.255.0
- bridge_ports none
- bridge_stp off
- bridge_fd 0
- post-up echo 1 > /proc/sys/net/ipv4/ip_forward
- post-up iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE
- post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE
- auto vmbr1
- iface vmbr1 inet6 static
- address 另一个ipv6地址 # 例子 2a01:abc:abc:abc::3/64
- #gateway fe80::1
- bridge_ports none
- bridge_stp off
- bridge_fd 0
- up ip -6 route add 2a01:abc:abc:abc::/64 dev vmbr1
- post-down ip -6 route del 2a01:abc:abc:abc::/64 dev vmbr1
这里面
- up ip -6 route add 2a01:abc:abc:abc::/64 dev vmbr1
是让所有的ipv6流量走vmbr1,才能将ipv6流量转发出去
- up ip -6 route del 2a01:abc:abc:abc::/64 dev vmbr0
是将2a01:abc:abc:abc::/64从vmbr0网桥中去掉
这里额外在提一下up post-down是干啥的
pre-up 网卡启用前的动作
up 启用时候的动作
post-up 启用后的动作
pre-down 关闭前的动作
down 关闭时动作
post-down 关闭后动作
配置一下转发
编辑
- /etc/sysctl.conf
加入
- net.core.default_qdisc=fq
- net.ipv4.tcp_congestion_control=bbr
- net.ipv4.ip_forward=1
- net.ipv6.conf.all.accept_dad = 1
- net.ipv6.conf.all.accept_ra = 0
- net.ipv6.conf.all.accept_redirects = 1
- net.ipv6.conf.all.accept_source_route = 0
- net.ipv6.conf.all.autoconf = 0
- net.ipv6.conf.all.disable_ipv6 = 0
- net.ipv6.conf.all.forwarding=1
上面两行是开启BBR,下面是相关转发
保存生效
- sysctl -p
重启网络服务
- systemctl restart networking.service
复制代码
查看网络状态
- systemctl status networking.service
复制代码
如果你在配置桥接网络这块配完了重启网络服务失败但是机器还有网,那么恭喜你还可以继续折腾,也就是你还可以继续修改网卡的配置文件,但如果你想让你新修改的配置生效就得用下面这条命令强制重启vmbr0(networking restart是没用的):
- ifdown --force vmbr0 && ifup --force vmbr0
复制代码
确认好全部完成之后,重启母鸡
- reboot
复制代码
检查下路由
- ip -6 route
复制代码
长这样就ok了
- ::1 dev lo proto kernel metric 256 pref medium
- 2a01:abc:abc:abc::/64 dev vmbr1 proto kernel metric 256 linkdown pref medium
- 2a01:abc:abc:abc::/64 dev vmbr1 metric 1024 linkdown pref medium
- fe80::/64 dev vmbr0 proto kernel metric 256 pref medium
- fe80::/64 dev vmbr1 proto kernel metric 256 linkdown pref medium
- default via fe80::1 dev vmbr0 metric 1024 onlink pref medium
复制代码
小鸡网卡配置
v4填
- 192.168.1.x
,别是网关就行,网关 是
- 192.168.1.1
,另外记得填上dns
- 8.8.8.8
v6填
- 2a01:abc:abc:abc::xxxx
,xxxx别是网关就行, 网关是
- 2a01:abc:abc:abc::3
,DNS填Google的,
- 2001:4860:4860::8888
母鸡NAT转发小鸡
- iptables -t nat -A PREROUTING -p tcp -m tcp --dport 23333 -j DNAT --to-destination 192.168.1.2:22
复制代码
把母鸡端口23333,转发到IP为192.168.1.2的小鸡端口22上,这样访问母鸡的公网IP+23333端口就相当于访问了这台小鸡的22端口
ipv6直接连就行了,连接地址就是小鸡v6地址