再次整理openwrt安装openvpn服务器

遇坑很多,网上文章言语不详,或者太过简略或者某一细节着墨太多,经过不断摸索,终于总结了这篇文章,实测好用,送给不甘寂寞的各位。

步骤 1:更新软件包列表

首先,登录到你的 OpenWRT 路由器管理界面(通常是 http://192.168.1.1),然后打开 System -> Software 页面,点击 Update lists 按钮来更新软件包列表。

如果你更喜欢使用 SSH 来完成这些操作,你可以通过 SSH 连接到路由器并运行以下命令:

opkg update 

步骤 2:安装 OpenVPN 软件包

接下来,安装 OpenVPN 服务器及相关软件包。你可以在 Web 管理界面的 Software 页面搜索并安装以下软件包,或者通过 SSH 安装它们。

通过 SSH 安装命令如下:

  opkg install openvpn-openssl openvpn-easy-rsa luci-app-openvpn

  • openvpn-openssl:OpenVPN 主程序,基于 OpenSSL
  • openvpn-easy-rsa:用于生成证书的工具
  • luci-app-openvpn:OpenVPN 的 LuCI(Web 界面)配置界面

步骤 3:生成各种笑脸和黑脸

使用 easy-rsa 工具生成所需的 CA 证书和密钥。

  1. 创建 Easy-RSA 环境:(建议在/etc/openvpn目录中运行,会建立pki文件夹)

    easyrsa init-pki

  2. 创建 CA(证书颁发机构)(同样在/etc/openvpn中运行,产生的文件会在pki中):

    easyrsa build-ca nopass

  3. 生成服务器证书和密钥:

    easyrsa gen-req server nopass

  4. 签署服务器证书:

    easyrsa sign-req server server

  5. 生成 Diffie-Hellman 参数:

    easyrsa gen-dh

  6. 生成客户端证书

    easyrsa gen-req client1 nopass easyrsa sign-req client client1(client1仅仅是个名字,随便起

  7. 生成 HMAC 密钥(用于增加安全性):

    openvpn --genkey --secret /etc/openvpn/ta.key

步骤 4:配置 OpenVPN 服务器

编辑 OpenVPN 服务器的配置文件,通常位于 /etc/openvpn/server.conf。如果该文件不存在,你需要手动创建它。

这个可以百度例如:

# 监听的端口和协议

port 1194

proto udp

#使用tap设备,二层设备,通常使用局域网

#proto tap

# 使用 TUN 设备三层设备,互联网

dev tun

# 服务器端的证书与密钥文件

ca /etc/openvpn/pki/ca.crt

cert /etc/easy-rsa/pki/issued/server.crt

key /etc/easy-rsa/pki/private/server.key

# Diffie-Hellman 参数

dh /etc/easy-rsa/pki/dh.pem

# HMAC 密钥(增加 TLS 安全性)

tls-auth /etc/openvpn/ta.key 0

# 加密算法

cipher AES-256-CBC

# 配置 VPN 子网(适用于客户端的 IP 池)

server 10.1.0.0 255.255.255.0

#为客户端分配固定ip的记录文件,不需要

#ifconfig-pool-persist /tmp/ipp.txt

# 路由设置

#vpn服务端向客户端推送vpn服务端内网网段,有几条路由就写几个push指令
push "route 192.168.6.0 255.255.255.0"(本地网络)

#push "redirect-gateway def1 bypass-dhcp"(使用本地网关,用途自己想象)

push "dhcp-option DNS 8.8.8.8"(谷歌dns,自己看着搞)

push "dhcp-option DNS 8.8.4.4"

# 保持会话的持久性

persist-key

persist-tun

# 日志文件

status /tmp/openvpn-status.log

log-append /var/log/openvpn.log

# 日志详细级别

verb 3

# 最大客户端连接数

max-clients 100

# 允许客户端间通信

client-to-client

解释配置文件的各项设置(可以看我下一篇文章,详细解读)

  • port 1194:OpenVPN 服务器监听的端口,默认是 1194。你可以根据需要修改这个端口。
  • proto udp:使用 UDP 协议,你也可以改为 proto tcp 使用 TCP 协议。
  • dev tun:使用 TUN 隧道设备,它是常用的路由方式。你cd 也可以使用 dev tap 进行以太网桥接,但通常 TUN 更常用。
  • cacertkeydh:这些是 OpenVPN 所需的证书和密钥文件,它们应该已经通过 easy-rsa 生成。
  • server 10.1.0.0 255.255.255.0:这是 OpenVPN 分配给客户端的 IP 子网。
  • push 选项:向客户端推送的路由和 DNS 设置。在这里,服务器推送了 Google 的公共 DNS 服务器,并将所有客户端流量通过 VPN。
  • persist-keypersist-tun:这些选项确保 OpenVPN 在重启时保持会话连接。
  • tls-auth:这提供了额外的安全性,防止不合法的连接尝试。需要一个 ta.key 文件来使用它。
  • verb 3:日志详细级别,3 是中等详细程度,推荐使用。可以设置为更高(如 verb 5verb 6)来调试。
  • client-to-client:允许 VPN 内部的客户端之间直接通信。

步骤 5:配置防火墙

确保 OpenVPN 所需的端口(如 1194)已在防火墙中开放。你可以在 OpenWRT 的 Web 界面中进行设置:

  1. Network -> Firewall,创建一个新的 Traffic Rule
  2. 允许 UDP 1194 端口的输入流量。
  • 需要创建vpn区域。

  • /etc/config/firewall 中添加以下内容:                                                         

  • config rule

  • option name 'Allow-OpenVPN-Inbound'

  • option src 'wan'

  • option dest_port '1194'

  • option proto 'udp'

  • option target 'ACCEPT' config forwarding

  • option src 'lan'

  • option dest 'vpn'

  • 3.创建 VPN 区域:(重要,必须要有)

  • config zone

  • option name 'vpn'

  • option input 'ACCEPT'

  • option forward 'REJECT'

  • option output 'ACCEPT'

  • option network 'vpn0'

步骤 6:启动 OpenVPN 服务

完成所有配置后,启用并启动 OpenVPN 服务。你可以通过以下命令启动 OpenVPN:

/etc/init.d/openvpn enable 
/etc/init.d/openvpn start 
日志查看
logread |grep openvpn
重新启动vpn:/etc/init.d/openvpn restart

步骤 7:配置客户端

配置客户端目的是生成几个文件,并将生成的 ca.crtclient1.crt(自定义名称)client1.keyta.key 文件传输到你的客户端设备。

执行如下命令:罖l

easyrsa gen-req client1 nopass

easyrsa sign-req client client1

生成 ca.crtclient1.crt(自定义名称)client1.key

连接到 OpenVPN 服务器,需要一个 .ovpn 文件(OpenVPN 客户端的配置文件)。

在生成 .ovpn 文件时,服务器端的配置文件会包含服务器的 IP 地址或域名、端口、协议、加密方式,以及客户端证书和密钥。

示例 .ovpn 文件

client

dev tun

proto udp

remote YOUR_SERVER_IP 1194

resolv-retry infinite

nobind

persist-key

persist-tun

remote-cert-tls server

ca ca.crt

cert client.crt

key client.key

tls-auth ta.key 1

cipher AES-256-CBC

verb 3

在这个文件中,你需要替换 YOUR_SERVER_IP 为 OpenVPN 服务器的实际 IP 地址或域名。

配置文件的关键部分:
  • remote YOUR_SERVER_IP 1194: YOUR_SERVER_IP 是服务器的 IP 地址或域名,1194 是 OpenVPN 使用的端口(根据服务器设置可能不同)。
  • cacertkey:这些是 OpenVPN服务器 连接所需的证书和密钥文件,通常与 .ovpn 文件一起由服务器提供。

将此配置文件导入到你的 OpenVPN 客户端中,并启动连接。

步骤 8:测试连接

使用 OpenVPN 客户端尝试连接到你的 OpenWRT VPN 服务器。如果一切设置正确,你应该能够成功连接到你的家庭网络。其中,openwrt中必须要在接口中添加属于vpn的接口tun0

注意此接口数据流量,如果有接收,但没有ping通时,必定是openwrt防火墙设置问题。

接下来,还需要在openwrt静态路由表中添加一条静态路由,作为数据回传使用,建立openvpn服务器,不会生成此条路由,必须要手动添加,我的远程内网是115.0网段,10.8.0.1则是openvpn服务器地址,截图如下:

分割线+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

按照以上配置,发现web页面和/etc/openvpn/server.conf配置有冲突,远程连接并不按照server.conf文件执行,而是按照web页面设置,最终发现web配置文件在/etc/config/openvpn中,修改此文件配置选项才可以同步配置,这一大坑在这个版本中体现:

因为我用openwrt做的内网文件共享,此时可以远程可以打开了。

因为水平有限,不足之处,还请多多指教

以下为笔记:删掉模版,留下自定义,加载openvpn目录下server.conf,用模板会有冲突,导致server.conf不起作用,必须要配置/etc/config/openvpn文件才可以,还会导致web页面openvpn消失。

好像还有个小细节,tls-auth /path/to/ta.key 0 # 在客户端为 1,服务器为 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

螃蟹咿呀爪八个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值