前提:路由器能获取公网Ipv4或者Ipv6地址。有域名。
1、安装相关软件包
opkg update
#安装核心包
opkg install openvpn-easy-rsa openvpn-openssl
# 备份现有配置文件(重要!)
cp /etc/config/openvpn /etc/config/openvpn.bak
# 强制安装并覆盖冲突文件,生成证书过程会很漫长,根据路由器的性能来决定安装时间的长短。需耐心等待安装命令完成
opkg install --force-overwrite luci-app-openvpn-server luci-i18n-openvpn-server-zh-cn
#(可选,因为我还需要客户端,所以一起安装上)安装openvpn客户端
opkg install luci-i18n-openvpn-zh-cn luci-app-openvpn
#安装完成,重启路由器。
reboot重启完成之后,路由器管理界面可以看到VPN

2、配置路由器获取公网Ipv6公网地址
我这里是路由器拨号上网,能获取公网Ipv6公网地址,在网络-接口中找到wan_6口,可以看到wan_6口和br-lan口已经自动获取到了Ipv6公网地址。然后配置一下br-lan接口的DHCPv6不下发公网IPv6地址。


最后确保连接在路由器上的设备不会获取到公网IPV6地址即可,因为我只需要路由器有公网V6地址即可。

3、配置DDNS
我这里是阿里云的域名,需提前注册阿里云并实名认证,购买好域名。然后获取阿里云的AK/sk,在路由器系统软件包中或者直接命令安装ddns-go插件
opkg install ddns-go luci-i18n-ddns-go-zh-cn luci-app-ddns-go安装完成后,刷新一下管理界面。在服务中打开ddns-go进行初始化配置

配置完成后启动ddns-go再进行域名解析相关设置

设置完成进行保存。
附:解决ddns-go日志时间与系统时间不一致问题。
首先将系统时间配置如下:
时区配置成:Asia/Shanghai 启动时间同步客户端,时间服务器选择国内的,immortalwrt固件刷好后一般不用设置这个。
其次安装 zoneinfo-asia 软件包,安装好之后重启路由器使其生效。
opkg install zoneinfo-asia
reboot
#重启完成之后,再次进入ddns-go web页面查看日志时间已经和系统时间一致。
4、配置Openvpn-server
VPN-OpenVPN服务器,配置如下:

保存并应用,出现服务器运行即可,查看网卡tun0 已获取到ip 192.168.8.1 说明openvpn-server已经启动成功。

#配置解释
redirect-gateway def1 bypass-dhcp的作用:
redirect-gateway:将所有客户端流量通过 VPN 隧道路由
def1:设置默认网关,但不删除原有默认路由
bypass-dhcp:避免使用服务器提供的 DHCP 设置
5、防火墙放行11194端口
网络-防火墙-通信规则。openvpn服务启动后会自动添加如下规则。如果没有添加,手动添加一下。

创建防火墙区域,vpn。接口tun属于vpn区域。各区域流量转发如下(安装openvpn-server插件的时候默认也会自动创建以下转发规则):

6、客户端配置
在web界面下载客户端文件到手机上测试连接,导出的配置文件中,如果没有服务端信息。需要自己在配置文件中添加一下,然后保存文件,将文件传到手机上:
proto udp6
remote cmcc.51683.xyz 2295手机客户端下载:https://nwt2vfwrjfh.feishu.cn/drive/folder/C4o6ffktllKRJad0JW3c9154nFd
手机关掉wifi,手机端导入下载OpenVPN 客户端配置文件测试vpn连接。如果连接不上,请继续往下看
7、穿透vpn-serve端口
使用ipv6公网没有连接成功,我将openvpnserver启动在ipv4的地址,通过frp穿透出去,可以连接成功。


同时还发现客户端之间不能互访。
检查服务端配置文件如下:

在配置文件中加入
# 允许客户端间通信
option client-to-client
#重启服务
/etc/init.d/openvpn restart8、更改openvpn-server端口
把openvpn-server端口换成其他端口,不用穿透也可以连接成功。我后面将端口换成了2295可以连接成功。
出现问题:vpn连接成功后无法访问路由器web。
原因:我想大概是因为服务是监听在ipv6公网地址,我通过ipv6公网连接上vpn,但是我使用的是ipv4内网地址来访问路由器Web。最后发现并不是这个原因,原因可以看下面的解决方法二。
尝试解决方法1:
查看路由器服务器端配置如下:

查看到推送路由配置为list ,打算将配置文件list 改成option,然后重启服务。最后还是没有解决
这里就先还原配置文件,将option 改回list
解决方法二:新建tun0接口
最后,新建接口tun0 并将tun0加入VPN区域成功解决问题。

tun0接口为vpn server启动后自动创建的接口,没有划分防火墙区域。


最后手机使用流量连接路由器ipv6的vpn后,通过内网地址登录路由器成功。