大鸡生小鸡:在Proxmox上为虚拟机配置IPV4 NAT + IPV6 SLAAC自动分配

曾经dedipath在世时亲测有效的步骤记录,在这里稍作整理。Contabo VPS 也可以成功配置 NAT IPv4 小鸡。其他主机商没试过。

为虚拟机设置NATV4和IPV6自动获取模式,每次开小鸡都不再需要手动加IP。

配置步骤

安装Proxmox的教程可以找官方的,这里不赘述。

大鸡可以杜甫也可以VPS。

安装完成Proxmox后,进入Web管理页面,创建一条名为vmbr1的新Linux桥接。

SSH登录到你的服务器,编辑/etc/sysctl.conf文件,然后插入以下内容:

1
2
3
4
5
6
7
8
9
10
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2
net.ipv6.conf.default.addr_gen_mode = 3
net.ipv6.conf.all.addr_gen_mode = 3

这些设置包括启用IP转发、配置网络队列规则(fq队列)、启用BBR拥塞控制算法以优化网络连接,以及配置IPV6地址生成方式。

保存后用sysctl -p命令生效。

进入/etc/network目录,编辑interfaces文件,并配置vmbr1接口的IPV4和IPV6地址。

为vmbr1接口指定一个IPV4私有CIDR,例如192.168.0.0/24。同时,也需要为这个接口指定一个IPV6的地址,这里我们使用公网的单播地址,通常在主机的地址范围内选取。

之后需要设置iptables规则,用于配置网络地址转换(NAT)和端口转发。

例如在这里我们将192.168.0.0/24的地址进行NAT,然后使用MASQUERADE完成NAT。

如果要端口转发,可以使用以下规则:iptables -t nat -I PREROUTING -d 114.5.1.4 -p tcp --dport 443 -j DNAT --to 192.168.0.2:443。这条规则表示将公网IP地址(114.5.1.4)的443端口的流量转发到内网地址192.168.0.2的443端口。

完整的网络接口配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
auto vmbr1
iface vmbr1 inet static
address 192.168.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0

iface vmbr1 inet6 static
address 2605:6400:1234:1::1/64

post-up iptables -t nat -I POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -I PREROUTING -d 114.5.1.4 -p tcp --dport 443 -j DNAT --to 192.168.0.2:443
post-down iptables -t nat -D PREROUTING -d 114.5.1.4 -p tcp --dport 443 -j DNAT --to 192.168.0.2:443

配置完成后,重启服务器!

重启后,安装一些必要的软件包

apt install isc-dhcp-server radvd -y

其中isc-dhcp-server用于提供DHCP服务,radvd用于提供Router Advertisement服务

配置DHCP服务:

编辑/etc/default/isc-dhcp-server文件,设置DHCP服务的网络接口:

1
2
INTERFACESv4="vmbr1"
INTERFACESv6="vmbr1"

然后编辑/etc/dhcp/dhcpd.conf文件,配置DHCP地址池。

插入:

1
2
3
4
5
6
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8;
range 192.168.0.2 192.168.0.254;
}

配置DHCPv6的地址池:

编辑/etc/dhcp/dhcpd6.conf文件,插入:

1
2
3
subnet6 2605:6400:1234:1::/64 {          
range6 2605:6400:1234:1::1 2605:6400:1234:1:ffff:ffff:ffff:fffe;
}

配置Router Advertisement服务:

编辑/etc/radvd.conf文件,插入:

1
2
3
4
5
6
7
8
9
10
11
12
interface vmbr1
{
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 100;
prefix 2605:6400:1234:1::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};

启动并设置开机自启动isc-dhcp-serverradvd服务:

1
2
3
4
systemctl enable isc-dhcp-server
systemctl enable radvd
systemctl start isc-dhcp-server
systemctl start radvd

至此,大鸡配置完毕!

参考原文:
https://kiyoka.moe/post/28.html
https://www.nodeseek.com/post-44410-1


大鸡生小鸡:在Proxmox上为虚拟机配置IPV4 NAT + IPV6 SLAAC自动分配
https://hexo.psorai.eu.org/2024/01/11/大鸡生小鸡:在Proxmox上为虚拟机配置IPV4 NAT + IPV6 SLAAC自动分配/
Author
Sora
Posted on
January 11, 2024
Licensed under