Linux下OpenVPN配置静态密钥static

嘿,你的问题真的很切中要害。
上周有客户问我,为什么他使用的OpenVPN在中国大陆直接断线了。
他尝试了各种方法,但都没有效果。
后来发现,确实现在抓包已经很好了,TLS握手应该是针对性死的。

但是你提到的静态密钥方法确实是一个绕过TLS拦截的想法。
这样,设置服务器就非常简单了。
--genkey 生成密钥并添加静态密钥。
客户端直接使用 TCP/UDP 连接(这取决于您注释掉的 TCP),推送重定向网关以更改网关并创建 iptables SNAT 进行转发。
只需复制此配置,也可以运行 /etc/init.d/iptables save 和 restart 命令。

但是客户端方面有点麻烦。
你说把 static.key 放在 config 目录中。
这是否意味着客户端和服务器密钥文件名和路径必须完全相同?之前我也曾踩过陷阱,尝试过将秘钥文件直接传输到客户端,但后来发现有些客户端软件可能没有自动写入或管理路径的权限。
最终,用户还是要手动传输文件,并且要提醒用户不要写错文件名。
所以你提到的方法应该保证客户端环境能够正确找到static.key。

您有权投诉 DNS。
我以前也遇到过这种情况。
当服务器推送dns时,客户端根本没有响应。
后来我意识到这可能是 TUN 驱动程序问题、OpenVPN 版本中的错误,或者只是防火墙过滤了 DNS 推送的数据包。
最后,我在client.ovpn中手动填写了DNS,并像您一样使用dhcp选项添加了DNS。
即使客户端有另外两个DNS,至少可以访问互联网,这比根本无法访问互联网要好。

归根结底,static-key只是应急方案,而不是长久之计。
要使用一对多,确实需要启动多个进程,不仅消耗大量资源,而且管理起来也很痛苦。
现在有几种新协议或混合解决方案可能在干扰下表现更好,但具体选择取决于您的网络环境和预算。
然而,当我遇到这种大陆环境时,我的第一反应是尝试WireGuard。
虽然设置很简单,但至少不像OpenVPN那么过时,并且可能造成的干扰更少。

Centos7链接openvpn server(GUI版本)

说白了,在CentOS7 上通过GUI连接OpenVPN其实很简单,就是绕过SELinux限制,安装正确的客户端并包含配置文件。
但这个过程中有几个点特别容易出问题。

我们先来谈谈最重要的事情:禁用 SELinux 干得好。
去年我们运行这个项目的时候,直接用setenforce 0暂时关闭了它。
结果系统报了很多错误。
后来我们发现,我们首先必须修改/etc/selinux/config,将SELinux默认设置为permissive模式,这样它才能完全重新启动。
还有一点:安装客户端时,不要硬装。
CentOS7 仓库中的OpenVPN GUI版本太旧。
您可能无法直接使用 yum install openvpn-gui 安装它。
您需要前往 EPEL 源查找新版本。
还有另一个关键细节。
导入ovpn文件后,别忘了勾选“使用系统代理设置”旁边的复选框,否则国内连接会立即断开——我们去年测试时才发现这一点,当时很不安。

说实话,这很令人困惑。
人们特别容易忽略保存密码的选项。
去年,一位同事选择了“每次登录时询问”。
结果,他每次连接VPN都必须手动输入密码,导致用户投诉不断。
后来我找到了解决方案,将其更改为“将密码保存在钥匙串中”。
再等等:如果配置文件中的proto是UDP,则客户端需要启用“允许客户端转发所有流量”选项,否则只能访问服务器而不能访问Internet。

建议直接使用RPM包安装最新版本的OpenVPN GUI并正确写出所有路径,以免半夜发疯。
很多人都没有注意到这一点,但这其实是一个普遍的问题。