server.conf
是 OpenVPN 服务器的主要配置文件,用于定义服务器的行为和客户端连接的参数。下面是典型的 server.conf
文件中的常见配置项及其详细解释:
1. 基本网络设置
port 1194
- 作用:定义 OpenVPN 服务器监听的端口,默认是
1194
。 - 说明:可以根据需要更改,但确保防火墙允许这个端口的通信。
proto udp
- 作用:定义 OpenVPN 使用的协议,默认是
UDP
。 - 说明:可以更改为
proto tcp
使用 TCP 协议,但 UDP 通常更快更高效。
dev tun
- 作用:指定使用
tun
设备(虚拟 IP 层网络接口),用于路由模式(即隧道模式)。 - 说明:
dev tap
适用于桥接模式,但在大多数场景下,tun
是更常用的选择。
2. 证书和密钥文件
ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key
- 作用:指定 CA 证书、服务器证书和私钥的路径。
- 说明:这些文件是在使用 Easy-RSA 生成时创建的,
server.crt
和server.key
是专门为服务器生成的证书和密钥。
dh /etc/openvpn/dh.pem
- 作用:指定 Diffie-Hellman 参数文件,用于密钥交换。
- 说明:通过
easyrsa gen-dh
生成的文件。
tls-auth /etc/openvpn/ta.key 0
- 作用:启用 TLS 认证,
ta.key
是静态密钥,用于防止 DoS 攻击。 - 说明:
0
表示服务器端,客户端对应的值是1
。
3. 网络和路由设置
server 10.8.0.0 255.255.255.0
- 作用:定义 OpenVPN 分配给客户端的 IP 地址池。
- 说明:
10.8.0.0
是 VPN 网段,255.255.255.0
是子网掩码。每个客户端连接时将从这个网段中获取一个 IP。
ifconfig-pool-persist /tmp/ipp.txt
- 作用:记录客户端的 IP 地址池分配情况。
- 说明:客户端每次连接后将尽量保持相同的 IP。
push "route 192.168.1.0 255.255.255.0"
- 作用:将特定路由推送给客户端,客户端连接后,所有发往 192.168.1.0/24 网络的流量都会通过 VPN 隧道传输。
- 说明:这条指令允许 VPN 客户端访问服务器本地的内网(例如
192.168.1.0/24
)。
push "dhcp-option DNS 8.8.8.8"
- 作用:向客户端推送 DNS 服务器地址。
- 说明:客户端使用
8.8.8.8
作为其 DNS 解析服务器,可以更改为其他 DNS 地址。
push "redirect-gateway def1"
- 作用:向客户端推送网关地址。
- 说明:条指令告诉客户端将默认网关更改为 VPN 隧道的网关,即所有客户端的流量都会通过 VPN 服务器的出口,而不是通过本地的网络出口(科学上网关键步骤)。
client-to-client
- 作用:允许客户端之间直接通信。
- 说明:如果不设置此项,客户端只能与服务器通信,不能直接互相通信。
4. 安全和加密设置
cipher AES-256-CBC
- 作用:指定加密算法。
- 说明:
AES-256-CBC
是一种非常安全的对称加密算法,可以根据需要更换加密算法。
auth SHA256
- 作用:指定数据认证算法。
- 说明:
SHA256
是一种常用的哈希算法,用于验证数据完整性。
keepalive 10 120
- 作用:启用心跳包机制,保持客户端连接的活跃状态。
- 说明:服务器每 10 秒向客户端发送一个 ping,若 120 秒内没有响应,则认为客户端失去连接。
user nobody group nogroup
- 作用:降低安全风险,指定 OpenVPN 以非特权用户身份运行。
- 说明:这样可以限制 OpenVPN 的权限,提高安全性。
5. 日志和状态监控
status /var/log/openvpn-status.log
- 作用:定义状态日志文件的位置。
- 说明:服务器将定期写入客户端的连接状态、IP 分配情况等信息。
log-append /var/log/openvpn.log
- 作用:指定日志文件的位置,并追加日志内容。
- 说明:用于调试和查看服务器运行情况。
verb 3
- 作用:定义日志的详细程度。
- 说明:
3
表示中等详细度,常用来调试;0
表示最少日志;6
表示最高详细度(更详细的日志信息)。
6. 拓扑配置
topology subnet
- 作用:指定 VPN 拓扑类型。
- 说明:
subnet
是推荐的拓扑类型,它为每个客户端分配一个独立的 IP 地址。以前的默认拓扑是net30
,将被弃用。
7. 防火墙和 NAT 设置
如果 OpenVPN 服务器的网络位于 NAT 后面,并且要让 VPN 客户端访问外部网络,则可能需要在防火墙配置中启用 IP 转发和 NAT。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- 作用:为从 VPN 出口流出的流量启用 IP 伪装。
- 说明:这条 iptables 规则将 VPN 客户端的流量伪装成服务器的出口 IP,使其能够访问外部网络。
示例 server.conf
文件
综合上述设置,典型的 OpenVPN 服务器配置文件可能如下:
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /tmp/ipp.txt
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
cipher AES-256-CBC
user nobody
group nogroup
persist-key persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
topology subnet
总结
server.conf
文件包含了 OpenVPN 服务器的所有关键配置,包括端口、协议、加密方式、网络配置、证书和密钥路径等。确保这些配置与服务器环境匹配,并根据具体需求进行调整是成功运行 OpenVPN 的关键。