云计算百科
云计算领域专业知识百科平台

再次整理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 证书和密钥。

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

    easyrsa init-pki

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

    easyrsa build-ca nopass

  • 生成服务器证书和密钥:

    easyrsa gen-req server nopass

  • 签署服务器证书:

    easyrsa sign-req server server

  • 生成 Diffie-Hellman 参数:

    easyrsa gen-dh

  • 生成客户端证书

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

  • 生成 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 更常用。
    • ca、cert、key 和 dh:这些是 OpenVPN 所需的证书和密钥文件,它们应该已经通过 easy-rsa 生成。
    • server 10.1.0.0 255.255.255.0:这是 OpenVPN 分配给客户端的 IP 子网。
    • push 选项:向客户端推送的路由和 DNS 设置。在这里,服务器推送了 Google 的公共 DNS 服务器,并将所有客户端流量通过 VPN。
    • persist-key 和 persist-tun:这些选项确保 OpenVPN 在重启时保持会话连接。
    • tls-auth:这提供了额外的安全性,防止不合法的连接尝试。需要一个 ta.key 文件来使用它。
    • verb 3:日志详细级别,3 是中等详细程度,推荐使用。可以设置为更高(如 verb 5 或 verb 6)来调试。
    • client-to-client:允许 VPN 内部的客户端之间直接通信。

    步骤 5:配置防火墙

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

  • Network -> Firewall,创建一个新的 Traffic Rule。
  • 允许 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.crt、client1.crt(自定义名称)、client1.key 和 ta.key 文件传输到你的客户端设备。

    执行如下命令:罖l

    easyrsa gen-req client1 nopass

    easyrsa sign-req client client1

    生成 ca.crt、client1.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 使用的端口(根据服务器设置可能不同)。
    • ca、cert、key:这些是 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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 再次整理openwrt安装openvpn服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!