logo NodeSeekbeta

利用wireguard实现IPv6 Only VPS使用双栈VPS的v4出口获得IPv4访问

本文用于解决类似此贴描述的问题 https://www.nodeseek.com/post-103083-1

以Debian 12为例,A设备为双栈网络,B设备为仅IPv6网络,两端设备均需要安装wireguard

apt install wireguard-tools

实现思路:

使用wireguard将两端设备组成一个局域网,端点为ipv6地址,两端分配内网IPv4地址,在A设备给内网网段配置NAT,实现B设备走A设备的网关出网。

实现步骤:

  1. wireguard的配置文件位于/etc/wireguard目录,默认情况下里面什么也没有,进入到该目录
    cd /etc/wireguard

  2. 创建密钥对,AB设备均需操作:

  • 创建私钥, 保存为priv_key文件

    wg genkey > priv_key

  • 根据私钥生成公钥

    wg pubkey < priv_key > pub_key

    现在两设备都生成了密钥,可以通过 cat priv_key 查看私钥,cat pub_key 查看公钥

  1. 编写配置文件,创建vnet.conf,规划了一段/30,10.80.90.0/30,除去头尾,还剩10.80.90.1 10.80.90.2可用

    • A设备:

    A设备监听12345端口,用于B设备连接, PostUp时添加nat规则,其中eth0为主网卡出口,请根据实际情况自行替换

    [Interface]
    PrivateKey = 替换为A设备的私钥
    Address = 10.80.90.1/30
    ListenPort = 12345
    PostUp = echo "1" > /proc/sys/net/ipv4/ip_forward
    PostUp = iptables -t nat -A POSTROUTING -s 10.80.90.0/30 -o eth0 -j MASQUERADE
    PostDown = iptables -t nat -D POSTROUTING -s 10.80.90.0/30 -o eth0 -j MASQUERADE
    
    [Peer]
    PublicKey = 替换为B设备的公钥
    AllowedIPs = 10.80.90.2/32
    
    • B设备:
    [Interface]
    PrivateKey = 替换为B设备的私钥
    Address = 10.80.90.2/30
    
    [Peer]
    PublicKey = 替换为A设备的公钥
    AllowedIPs = 0.0.0.0/0
    Endpoint = [A设备的v6地址]:12345
    
    • 启动wireguard
      systemctl start wg-quick@vnet

    • 开机自启
      systemctl enable wg-quick@vnet

    • 测试

    PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
    64 bytes from 114.114.114.114: icmp_seq=1 ttl=88 time=37.8 ms
    64 bytes from 114.114.114.114: icmp_seq=2 ttl=88 time=37.7 ms
    64 bytes from 114.114.114.114: icmp_seq=3 ttl=80 time=37.8 ms
    

实现完毕。

12345
  • @jibude #30
    双栈机器的Interface里 /30扩到/24,/30的子网不允许你Peer多台设备
    Address = 10.80.90.1/24

    Peer里的AllowedIPs可以使用10.80.90.2/32到10.80.90.254/32

    防火墙针对 10.80.90.0/24 配置NAT

    这里涉及一些IP规划的知识,或者搜索IP子网计算器,IP子网划分去了解这方面的知识。

  • @Stevie0427 #6
    看你怎么用,可以nat,也可以直接分子网,虚拟网线罢了

  • @mumu233 #20
    在A机器上配个转口转发 转发到10.80.90.2就可以
    打个比方 A机器的55522转发B机器的22端口:
    iptables -t nat -A PREROUTING -d A机器的ipv4 -p tcp -m tcp --dport 55522 -j DNAT --to-destination 10.80.90.2:22
    iptables, socat 都行,嫌麻烦可以搭个极光面板

  • 顶顶顶

  • 欧洲区域机器我就这样用的

    分享不错xhj003

  • 好贴 ac08

  • 马克

  • b 机器 走a 机器的 v4 访问网络 是吧

  • 老哥这个我记得有脚本的

  • 好帖,那这玩意可以和DN42共存吗 xhj002

  • 提醒,可以直接分公网ipv6(x

  • 鸡腿奉上

12345

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72267位seeker

🎉欢迎新用户🎉