在使用ipv6-only的机器是时候,总是各种不方便,如果你有一台ipv4+ipv6双栈网络机器,可以利用wireguard实现IPv6 Only VPS使用双栈VPS的v4出口获得IPv4访问。
以下以debian12为例子,A设备为双栈网络,B设备为仅IPv6网络,两端设备均需要安装wireguard
apt install wireguard-tools
实际思路,利用wireguard将多台设备组成局域网,多台设备间利用ipv6进行连接。每台设备分配内网ipv4,在A设备给内网网段配置NAT,实现B设备走A设备的网关出网。
实现步骤
1.wireguard的配置文件位于/etc/wireguard
目录,默认情况下里面什么也没有,进入到该目录 cd /etc/wireguard
2.创建密钥对,AB设备均需操作:
1.创建私钥, 保存为priv_key文件wg genkey > priv_key
2.根据私钥生成公钥wg pubkey < priv_key > pub_key
3.现在两设备都生成了密钥,可以通过 cat priv_key 查看私钥,cat pub_key 查看公钥
3.编写配置文件,wg0.conf
规划了一段/24,10.0.0.1/24。
1.a机器的配置文件
[Interface]
PrivateKey = 替换为A设备的私钥
Address = 10.0.0.1/24
ListenPort = 12345
PostUp = echo "1" > /proc/sys/net/ipv4/ip_forward
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE
[Peer]
PublicKey = 替换为B设备的公钥
AllowedIPs = 10.0.0.1/32
2.b机器的配置文件 ``` [Interface] PrivateKey = 替换为B设备的私钥 Address = 10.0.0.2/32</p> <pre><code>[Peer] PublicKey = 替换为A设备的公钥 AllowedIPs = 0.0.0.0/0 Endpoint = [A设备的v6地址]:12345 ```
3.启动wireguard
systemctl start wg-quick@wg0
4.开机自启动wireguard
systemctl enable wg-quick@wg0
本配置可以实现多台ipv6机器获得内网ipv4,如还有一台ipv6的机器c
编写配置文件,wg0.conf
1.a机器的配置文件
[Interface]
PrivateKey = 替换为A设备的私钥
Address = 10.0.0.1/24
ListenPort = 12345
PostUp = echo "1" > /proc/sys/net/ipv4/ip_forward
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE
[Peer]
PublicKey = 替换为B设备的公钥
AllowedIPs = 10.0.0.1/32
[Peer]
PublicKey = 替换为c设备的公钥
AllowedIPs = 10.0.0.2/32
2.b机器的配置文件
[Interface]
PrivateKey = 替换为B设备的私钥
Address = 10.0.0.2/32
[Peer]
PublicKey = 替换为A设备的公钥
AllowedIPs = 0.0.0.0/0
Endpoint = [A设备的v6地址]:12345
3.c机器的配置文件
[Interface]
PrivateKey = 替换为3设备的私钥
Address = 10.0.0.3/32
[Peer]
PublicKey = 替换为A设备的公钥
AllowedIPs = 0.0.0.0/0
Endpoint = [A设备的v6地址]:12345
Comments NOTHING