如何在 Linux 上设置 OpenVPN 客户端
本文将教你如何在 Linux 上设置 OpenVPN 客户端,并使用适当的例程来精确控制你的网络流量。.

如何在 Linux 上设置 OpenVPN 客户端

本文将以结构化的技术文档形式,指导您如何在 Linux 系统上设置 OpenVPN 客户端。通过分步说明和路由管理,您可以更好地控制流量。本文还包含安全提示和故障排除技巧,帮助您优化 OpenVPN 的使用体验。.
0 股票
0
0
0
0

 

您想在 Linux 上安装 OpenVPN 作为客户端,并将特定路由通过 VPN 还是通过普通路由进行路由?

本指南将以实用且技术性强的步骤,引导您如何在主流 Linux 发行版上配置 OpenVPN 客户端。我们将提供示例文件、用于管理路由的启动/关闭脚本、拆分隧道和 IP 绕过方法,以及用户名/密码身份验证技巧。.

 

先决条件

开始之前,请确保您已准备好以下物品:

  • Linux系统(Ubuntu/Debian/CentOS/Fedora/Alma)
  • 关闭 OpenVPN 已安装
  • 服务器配置文件或文件 .ovpn 来自 VPN 提供商
  • 组合身份验证(用户名/密码 + 证书)时的用户名/密码

 

OpenVPN 安装

常用发行版的安装命令:

sudo apt update && sudo apt install openvpn
sudo dnf install openvpn

 

基本设置(手动执行)

如果文件 client.ovpn 如果已经安装了,请使用以下命令立即运行:

sudo openvpn --config client.ovpn

如果服务器使用用户名/密码,而您不想每次都输入,请创建一个凭据文件:

sudo tee /etc/openvpn/credentials <<'EOF'
myuser
mypassword
EOF
sudo chmod 600 /etc/openvpn/credentials

在文件中 .ovpn 必须存在以下行或添加以下行:

auth-user-pass /etc/openvpn/credentials

安全提示:auth-nocache 用于防止 OpenVPN 将密码缓存到内存中:

auth-nocache

 

默认路由控制:默认服务器行为

路由的默认行为通常由服务器决定:

  • 如果服务器 重定向网关 def1 如果你按下按钮,你的所有流量都将通过 VPN(全隧道)传输。.
  • 要阻止服务器接受默认路由,您可以使用 路线-无拉动 然后手动添加所需的路由。.

 

方法一——仅通过 VPN 发送部分 IP 地址(拆分隧道)

如果您只想通过 VPN 发送特定地址,请使用 路线-无拉动 在文件中 client.ovpn 使用并添加所需的路线。.

client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun

route-nopull

route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0

解释:路线-无拉动 服务器不接受任何路由,您只能使用现有线路。 路线 您可以通过 VPN 路由特定目的地。.

 

方法二——所有流量都通过 VPN,但少数特定 IP 地址走正常路径(绕过)

当服务器 重定向网关 def1 如果您希望某些特定地址通过默认(互联网)路由进行推送,则需要保存主网关并重写旁路路由。.

A) 连接前请保存原始网关

连接前获取默认网关和设备的示例命令:

GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')

上升 tun0重新添加您想要通过网关绕过的 IP 地址:

sudo ip route add 203.0.113.0/24 via $GW dev $DEV
sudo ip route add 8.8.8.8/32 via $GW dev $DEV

b) 使用上下脚本实现自动化

client.ovpn 添加以下代码行以运行脚本:

script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh

例子 /etc/openvpn/client-up.sh:

#!/bin/bash
echo "$(ip route show default | awk '/default/ {print $3, $5}')" > /var/run/openvpn.origgw
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route add 8.8.8.8/32 via $GW dev $DEV
ip route add 203.0.113.45/32 via $GW dev $DEV
exit 0

例子 /etc/openvpn/client-down.sh:

#!/bin/bash
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route del 8.8.8.8/32 via $GW dev $DEV || true
ip route del 203.0.113.45/32 via $GW dev $DEV || true
rm -f /var/run/openvpn.origgw
exit 0

别忘了运行脚本:

sudo chmod +x /etc/openvpn/client-up.sh /etc/openvpn/client-down.sh

 

方法三——基于策略的路由

您可以使用基于策略的路由将特定来源的流量定向到 VPN。.

echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.5/32 lookup vpnroute
sudo ip route add default dev tun0 table vpnroute

查找信息 tun0 以及虚拟网关:

ip -4 addr show dev tun0
ip route show dev tun0

 

正在使用 systemd(自动启动)连接

对于路径中的配置文件 /etc/openvpn/client/ 您可以运行 systemd 单元:

sudo systemctl start openvpn-client@client
sudo systemctl enable openvpn-client@client
sudo journalctl -u openvpn-client@client -f

 

DNS 和名称解析问题

如果 DNS 由服务器推送,某些发行版需要脚本。 更新解析配置 或与……协调 systemd-resolved 你有。.

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

在系统中 systemd-resolved 它们可能需要额外的配置。.

 

完整的 client.ovpn 示例(示例)

client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256

auth-user-pass /etc/openvpn/credentials
auth-nocache
route-nopull

route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0

script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh

 

安全和操作提示

  • 使用以下命令创建凭据文件 chmod 600 保护。.
  • 从客户端证书和 tls-auth/tls-crypt 用于防止简单的拒绝服务攻击。.
  • auth-nocache 用于避免将密码缓存在内存中。.
  • 保持 OpenVPN 更新,并使用现代的加密/哈希算法,例如 AES-256-GCM 或者 恰恰20 使用。.
  • 监控日志并使用 systemd 和 logrotate 来轮换日志。.

对于需要最低延迟的环境(交易员/游戏玩家),使用近距离位置或拆分隧道技术,仅路由维持 ping 值和稳定性所需的服务。.

 

修复常见错误

  • 连接未建立:请检查防火墙(ufw/iptables/安全组)中的端口和协议。.
  • DNS 无法正常工作:来自 更新解析配置 或手动调节 /etc/resolv.conf 使用。.
  • 路线未添加:请确保 脚本安全 2 它已启用,脚本可执行。.
  • 互联网连接中断后:服务器可能推送了默认路由;请使用绕过或路由不拉取方法。.

 

比较不同类型用户的应用和技巧

  • 交易员: 需要良好的网络延迟和稳定性;使用距离较近的位置,如果可能的话,仅使用分流隧道连接到交易服务器。.
  • 游戏玩家: 游戏流量通常应该走最短路径;全隧道可能会增加延迟,所以只路由游戏服务器或使用附近的服务器。.
  • 网站管理员/DevOps: 建议在安装了 systemd 的服务器上运行 OpenVPN 客户端,并对特定服务使用基于策略的路由。.
  • 人工智能/渲染: 对于大数据传输,全隧道和高带宽服务器更合适。.

 

总结与结论

要在 Linux 上运行 OpenVPN 客户端,通常需要该文件。 .ovpn 此外 auth-user-pass 如果需要的话 路线-无拉动 对于拆分隧道来说,这已经足够了。要在全隧道模式下绕过某些 IP 地址,请保留之前的网关并添加相应的路由。对于更复杂的行为,请使用基于策略的路由。.

您可能也喜欢