跳转至

使用 OpenWrt 配置 IPv6 + DDNS + OpenVPN
实现远程访问及异地组网

引言§

灵感来自 YouTube 上的 UP 主: 24K钢丝, 也要感谢 世界上最好的奶龙 提供帮助

首先说明本次用到的装备

设备名称 详情
公网的IPv6
或IPv4地址
至少一个, 可以是固定的也可以是弹性公网, 如果没有的就做内网穿透
域名 可以在阿里云、腾讯云、华为云等厂家购买域名, 我用的是阿里云的
软路由设备 我用的是 R4S, 买成¥571, 记得选带 TF 卡和 TF 读写器, 或者自己单独买也行。
也可以用其他的 RS 设备、x86_64 机子或小米、树莓派、Raspberry Pi等路由设备
Open Wrt 我用的是 BleachWrt , 版本是 bleachwrt plus 20250117, 同版本固件下载地址, 找自己对应版本的固件下载, 并且要注意不熟悉Wrt的人尽量不要用 mini-daily , 这个是精简版, 推荐使用高大全版本下载 plus-daily
rufus 刷固件的软件, 也可以用其他的软件, 我用的是rufus-v4.6, 下载地址

下载并安装固件§

  1. 路由结构

    光猫接 R4S 的 WAN 口, R4S 的 LAN 口出去接路由器/交换机的 LAN 口

    graph LR
    A[<strong>光猫</strong><br>桥接模式] -->|2.5G --> WAN| B[<strong>R4S</strong><br>PPPoE拨号];
    B -->|LAN --> WAN| C[<strong>路由器/交换机</strong><br>路由器为桥接模式]
    C --> D[手机]
    C --> E[电脑]
    C --> F[其他设备]
    光猫改桥接: 我本来想自己找光猫的超级管理员账户和密码, 结果找了半天没找到, 就给宽带师傅打电话, 让他远程给我改的。发现找宽带师傅更快, 一个电话就搞好了, 都不用自己在网上慢慢找慢慢测试
  2. 将固件刷到软路由中

    R4S 存储固件的方式是用 TF 卡, 所以只需要将固件刷进 TF 卡就行了。 设备 选择 U 盘, 引导类型 选择下好的 Wrt 固件, 然后 点击开始, 等待 准备就绪 变成绿色就可以将 TF 插到 R4S 的卡槽中了。

    1.png

    图中 1 代表 U 盘名称, 2 代表固件名称

系统基本设置§

登录页面§

R4S 上电后, 等待 system 亮绿灯后就可以进入 Wrt 的登录页面了。如果你发现你没有网络存储、VPN 这些内容的话, 你下的就是mini的精简版, 请重新找一下 plus 的高大全版。

  • 默认用户名:root
  • 默认密码:password

设置 PPPoE 拨号§

  1. 网络 → 接口 中将全局网络选项中的 IPv6 前缀删掉。

    2.png

  2. 然后在顶部的 WAN 口, 如果是 IPv6 的话就设置 WAN6 , 将传输协议设置为 PPPoE, 用户名和密码就是宽带账号和密码, 如果不知道就在改光猫桥接的时候问一下, 设置完成后点击 保存&应用

    3.png

配置 Lucky§

前期准备§

  1. iStore 中搜索并下载 Lucky 插件, 下载的终端弹窗边缘变成绿色就代表完成

    4.png

  2. 服务 → Lucky 中找到插件基本设置, 然后启动服务, 进入 Lucky 后台管理页面, 初始用户名和密码都是 666。 进入之后设置安全入口以及用户名和密码, 否则不能设置 DDNS 动态域名

    5.png

设置 DDNS 动态域名§

  1. 点击 动态域名 → 添加 DDNS 任务, 以下内容没写的都是默认, 不用改

    项目 设置详情
    任务开关 启用
    操作模式 简易模式
    DNS
    服务商
    这个得根据你域名的 DNS 托管商, 如果你域名的 DNS 是阿里的, 这里就选阿里, 我这里用的阿里
    AccKey ID
    和 Secret
    点击上面的创建 AccessKey 一步一步来就行了
    类型 根据你的公网 IP 进行更改, 我没有公网 IPv4 , 就选的 IPv6
    获取公网 IP
    方式
    通过网卡获取
    网卡列表 br-lan
    IP 选择
    匹配规则
    测试一下, 如果测试结果是 240e、2409、2408开头的都是公网 IP(分别代表电信、移动、联通)
    如果实在不知道就把测试得到的 IP 拿去 ITDOG ping 一下, 如果全绿就是公网 IP, 否则就不是
    域名列表 就是你买的那个域名, 可以设置成三级域名, 比如我的就是 ovpn.leeyearn.com
  2. 看同步情况

    如果同步情况是 公网 IP 未改变 / 托管商记录一致 都表示通过了

    7.png

配置 OpenVPN§

启用 OpenVPN§

在 Wrt 中 VPN → OpenVPN 地址中按照如下表格进行配置, 完成后保存并应用。

设置名 设置详情
启用 勾选
协议 看你选的是 IPv4 还是 IPv6 , 但是 UDP 和 TCP 中 建议选 UDP
端口 默认
WAN 口...IP 就填刚刚 DDNS 的那个域名, 比如 ovpn.leeyearn.com
客户端网段 默认
客户端推送配置1 根据你的 Wrt 的 IP 环境来定, 这里是写 Wrt 所在的网段,
后面的子网掩码不变比如 Wrt 的地址是 192.168.1.1, 那这里就填 192.168.1.0
客户端推送配置2 默认
客户端推送配置3 默认
客户端推送配置4 建议把 DNS 后面的 IP 改成域名商的 DNS IP, 比如阿里的就是 223.5.5.5

8.png

添加 Server 的参数§

为了允许多台设备在同一时间段连接服务器, 就要在 OpenVPN 的 Server 端修改配置文件, 有 所有设备共享同一个证书连接接 VPN给每个设备单独颁发证书 两种方法, 我这里偷个懒用第一种简单的方法, 但是不是很安全。

  1. 通过 SSH 远程连接 Wrt 设备并修改 OpenVPN 的配置文件

    vim /etc/config/openvpn
    
    提示: 登录的用户名为root, 密码为password
  2. i 进入编辑模式, 在配置文件最后面添加参数

    option duplicate_cn "1"
    

    9.png

  3. Esc 退出编辑模式, 再按 : 进入命令模式, 输入 wq! 保存并退出, 最后使用这个命令重启 OpenVPN 服务就好了

    /etc/init.d/openvpn restart
    

在手机上测试§

  1. 在 Wrt 中的 VPN → OpenVPN 上面导出自己的 *.ovpn 文件。

  2. 然后在手机上下载 OpenVPN Connect 的软件并导入到手机。一般文件可以选择打开方式, 打开方式就选择 OpenVPN Connect 打开。然后在非 Wrt 路由下打开 Wrt 地址, 如果是 Wrt 登录页说明没问题了。

    提示: 非 Wrt 路由下 表示不要连接 Wrt 以及它下级的所有设备。

如果想在 Windows / Mac / Linux 的设备上使用 OpenVPN 请查看 使用 OpenVPN Client 文章

防火墙地址伪装§

但是现在只能访问 OpenWrt, 无法访问内网的其他设备。因为 Wrt 没有做外网地址的内网转换, 这时候就需要对防火墙的 NAT 进行设置, 将来自内网且经过防火墙的流量进行地址转换, 使其能够正确地通过外网进行通信。

实现方式§

在 Wrt 中的 网络 → 防火墙 → 自定义规则 的末尾添加以下参数, 然后重启防火墙即可。

iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE
提示: 参数的含义就是对于从 br-lan 接口发出的所有数据包, 将它们的源 IP 地址修改为 br-lan 接口的 IP 地址, 使内网主机能够通过 NAT 访问外部网络。

10.png

远程访问内网设备测试§

  1. 这里通过手机使用流量在 Windows App 软件远程连接内网 PC 进行测试。但是首先打开电脑的远程连接功能。

    11.png

  2. 然后在 Windows App 中点击 + 号添加设备, 输入电脑的。

    12.png

评论