Hetnzer Proxmox 开 ipv4 NAT + 独立ipv6 小鸡教程

网上有很多教程了,但这几天试下来,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地址

点赞