Kimsufi独服使用Proxmox开NATIPv4+IPv6双栈小鸡

登到机器内查看机器的ipv6地址:

ip -6 a

回显类似:

查看机器的ipv6网关:

ip -6 route list

回显类似:

kimsufi的网站上虽然标明每台机器只有/128的ipv6,但实际可用应该是/64,为了后续的步骤能够正常进行,这里先简单检查一下机器到底能用多少个ipv6,可以先往机器的主网卡接口添加一个ipv6测试:

ip addr add 2001:41d0:x:xxxx::2/128 dev eno1

在别的机器上能ping通刚添加的地址就说明可用的ipv6不止/128:

那就可以继续下面的操作了,按照我先前这篇文章的步骤安装好proxmox:
Kimsufi独服通过救援系统虚拟KVM安装Proxmox7

编辑网卡配置文件:

nano /etc/network/interfaces

在先前这篇文章的配置基础上,加入ipv6相关的配置:

auto lo
iface lo inet loopback

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
	address xx.xx.xx.xx/24
	gateway xx.xx.xx.xx
	bridge-ports eth0
	bridge-stp off
	bridge-fd 0

iface vmbr0 inet6 static
        address 2001:41d0:x:xxxx::1/64
        gateway 2001:41d0:x:xxxx:ff:ff:ff:ff

auto vmbr1
iface vmbr1 inet static
        address 10.1.0.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 '10.1.0.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.1.0.0/24' -o vmbr0 -j MASQUERADE

重启网络服务:

systemctl restart networking.service

正常的话,现在母鸡的ipv6就通了:

为了让小鸡也能用上ipv6,现在还需要做一系列的配置。首先开启ipv6转发:

echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf && sysctl -p

使用NPD6自动配置IPV6子网
把下面代码中的IPV6地址前缀换成你自己的,注意不要丢掉末尾的冒号,然后在独服上执行:

apt install -y git g++ npd6
cd /etc/init.d/
wget https://github.com/npd6/npd6/raw/master/etc/npd6
chmod +x npd6
echo "prefix = 2607:xxxx:120:d9a:" >> /etc/npd6.conf
echo "interface = vmbr0" >> /etc/npd6.conf
/etc/init.d/npd6 start

执行完这些代码,如果没有遇到什么错误提示,IPV6子网就已经设置好了,后面再开这个IPV6前缀的虚拟机就不再需要任何配置了。

下面是开小鸡时的设置,注意不论是lxc还是kvm架构的小鸡,我这个配置统一都需要添加两个网卡。

对于lxc小鸡,在创建的时候可以先添加一个用于ipv6网络的eth0,桥接vmbr0,ipv6选择slaac:

等小鸡创建完成后再添加一个用于ipv4网络的eth1,桥接vmbr1,手动配置ipv4的地址和网关:

正常情况下,小鸡现在就是natipv4+ipv6双栈网络了:

如何想要小鸡自动获取ipv4的ip,可以这样设置.
安装Dnsmasq及配置DHCP服务器
我将从默认的上游存储库中的一个Proxmox虚拟机管理程序中安装dnsmasq:

sudo apt update
sudo apt install dnsmasq

安装提供dig命令的dnsutils软件包:

sudo apt install dnsutils -y

Dnsmasq中的DNS功能配置为将所有请求转发到系统的/etc/resolv.conf文件中配置的默认DNS设置。

使用Dnsmasq配置DHCP服务器

在Proxmox服务器上成功安装Dnsmasq之后,您可以开始配置DHCP服务:

nano /etc/dnsmasq.conf

让dnsmasq知道它将用于侦听DHCP请求的以太网接口:(这里设置监听ipv6的虚拟网卡)

interface=vmbr1

设置要分发的IP地址的DHCP服务器范围:

dhcp-range=10.1.0.2,10.1.0.150,12h

设置dnsmasq提供的默认路由:(小鸡获取的网关)

dhcp-option=3,10.1.0.1

设置dnsmasq提供的dns服务器:(小鸡自动获取的dns)

dhcp-option=option:dns-server,213.186.33.99,8.8.8.8

测试您的配置:

dnsmasq --test

dnsmasq: syntax check OK.

重新启动dnsmasq服务:

systemctl restart dnsmasq
systemctl enable dnsmasq

设置完这些之后,创建小鸡的时候,选择DHCP自动获取IP就可以获得内网ipv4地址了。

对于kvm小鸡,实际操作大同小异,这里我就开个debian11的小鸡演示一下配置。

创建的时候先添加一个桥接vmbr0的网卡(获取ipv6):

等小鸡创建完成后再添加一个桥接vmbr1的网卡(获取ipv4):

打开vnc控制台开始安装系统:

这里有两块网卡ens18和ens19,实际ens18对应vmbr0,ens19对应vmbr1,这里选择ens18就可以实现ipv6的slaac:

至于ens19那块对应vmbr1的网卡,等待系统安装完成后手动配置ipv4即可。

接下来需要配置一个dns:

剩下的就是设置root密码,创建普通用户,还有分区这些了,这里就不多说了。等系统安装好,登录进去后,测试ipv6是否正常:

只需要在文件的尾部添加ens19网卡的ipv4配置:

auto ens19
iface ens19 inet static
	address 10.1.0.2/32
	gateway 10.1.0.1

然后添加一个dns服务器:

nano /etc/resolv.conf

写入如下配置:

nameserver 8.8.8.8

重启机器即可。

如果要手动指点小鸡的ip可以这样设置:

桥接选择刚才新建的那个虚拟网口vmbr1(获取ipv4),如果桥接vmbr0,则获取ipv6.
IPV4/CIDR设置小鸡的内网IP,后面要加/24。IPV4网关设置为vmbr1的IPV4地址,后面不带/24
IPV6/CIDR设置小鸡的IPV6地址,后面要加/64。IPV6网关设置为vmbr1的IPV6地址,后面不带/64
另外,DNS选项卡可以不设置,保持默认即可。

设置完毕后等待系统创建小鸡,创建完毕后点左侧菜单的小鸡ID,然后点网页右上角启动按钮,就可以启动小鸡了。

在母鸡上做dnat,把小鸡的ssh端口暴露出来:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 16822 -j DNAT --to-destination 10.1.0.2:22

同样如果要把小鸡的80端口暴露可以这样:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 16880 -j DNAT --to-destination 10.1.0.2:80

其他端口暴露,以此类推。

设置永久暴露,编辑/etc/network/interfaces文件的vmbr1下增加:

post-up iptables -t nat -A PREROUTING -p tcp --dport 10080 -j DNAT --to-destination 10.1.1.100:80
pre-down iptables -t nat -D PREROUTING -p tcp --dport 10080 -j DNAT --to-destination 10.1.1.100:80

重启网络

systemctl restart networking.service

最后设置母鸡的DNS设置

点赞