Ubuntu 16.04下OpenVPN安装与网关配置全攻略
2025.09.26 20:25浏览量:1简介:本文详细介绍在Ubuntu 16.04系统上安装配置OpenVPN服务端,并设置客户端作为网关连接子网的全过程,涵盖安装、配置、证书管理、防火墙设置及客户端配置等关键步骤。
一、环境准备与OpenVPN安装
在开始配置之前,确保Ubuntu 16.04系统已更新至最新状态,并具备基本的网络配置。首先,安装OpenVPN及其依赖项:
sudo apt-get updatesudo apt-get install openvpn easy-rsa
easy-rsa是一个用于管理OpenVPN证书的工具包,简化了证书的创建和管理过程。
二、配置证书颁发机构(CA)
初始化PKI(公钥基础设施):
make-cadir ~/openvpn-cacd ~/openvpn-ca
编辑
vars文件:设置CA的基本信息,如国家、省份、城市等。nano vars
修改如下字段(示例):
export KEY_COUNTRY="CN"export KEY_PROVINCE="Beijing"export KEY_CITY="Beijing"export KEY_ORG="YourOrg"export KEY_EMAIL="admin@yourorg.com"
初始化PKI并构建CA:
source vars./clean-all./build-ca
这将生成CA证书和私钥,位于
~/openvpn-ca/keys/目录下。
三、生成服务器证书和密钥
生成服务器证书:
./build-key-server server
按照提示填写信息,大部分可以默认。
生成Diffie-Hellman参数:
./build-dh
生成TLS认证密钥(增强安全性):
openvpn --genkey --secret keys/ta.key
四、配置OpenVPN服务端
复制模板配置文件:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/sudo gzip -d /etc/openvpn/server.conf.gz
编辑服务端配置:
sudo nano /etc/openvpn/server.conf
修改或添加以下关键配置:
port 1194proto udpdev tunca /etc/openvpn/ca.crtcert /etc/openvpn/server.crtkey /etc/openvpn/server.keydh /etc/openvpn/dh.pemserver 10.8.0.0 255.255.255.0ifconfig-pool-persist /var/log/openvpn/ipp.txtpush "redirect-gateway def1 bypass-dhcp" # 重要:将客户端流量路由通过VPNpush "dhcp-option DNS 8.8.8.8"keepalive 10 120tls-auth /etc/openvpn/ta.key 0cipher AES-256-CBCpersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.logverb 3
创建必要的目录和文件:
sudo mkdir -p /var/log/openvpnsudo cp ~/openvpn-ca/keys/{ca.crt,server.crt,server.key,dh.pem,ta.key} /etc/openvpn/
五、配置防火墙和NAT
启用IP转发:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.confsudo sysctl -p
配置UFW防火墙(如果使用):
sudo ufw allow 1194/udpsudo ufw allow from 10.8.0.0/24 to any port 22 # 示例:允许VPN子网访问SSHsudo ufw enable
设置NAT规则(允许VPN客户端访问互联网):
sudo nano /etc/ufw/before.rules
在文件顶部添加(在
*filter之前):*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADECOMMIT
重启UFW:
sudo ufw disablesudo ufw enable
六、启动OpenVPN服务
sudo systemctl start openvpn@serversudo systemctl enable openvpn@server
七、客户端配置与作为网关连接子网
生成客户端证书:
cd ~/openvpn-casource vars./build-key client1
创建客户端配置文件(
client1.ovpn):clientdev tunproto udpremote your_server_ip 1194resolv-retry infinitenobindpersist-keypersist-tunremote-cert-tls servercipher AES-256-CBCverb 3<ca>(粘贴ca.crt内容)</ca><cert>(粘贴client1.crt内容)</cert><key>(粘贴client1.key内容)</key><tls-auth>(粘贴ta.key内容)</tls-auth>key-direction 1
客户端作为网关配置:
- Windows客户端:在VPN连接属性中,选择“网络”选项卡,勾选“允许其他网络用户通过此计算机的Internet连接来连接”,并选择正确的网络接口。
- Linux客户端:编辑
/etc/sysctl.conf启用IP转发,并使用iptables设置NAT规则,类似于服务端配置。
测试连接:
- 在客户端上连接VPN。
- 使用
ping命令测试是否能访问VPN子网内的其他设备或服务。 - 检查服务端日志(
/var/log/openvpn/openvpn-status.log)以确认连接状态。
八、总结与优化建议
通过上述步骤,您已成功在Ubuntu 16.04上安装并配置了OpenVPN服务端,同时设置了客户端作为网关连接子网。为了确保系统的稳定性和安全性,建议定期更新OpenVPN和操作系统补丁,监控日志文件,以及根据实际需求调整防火墙规则。此外,考虑使用更强大的加密算法和认证机制,如采用椭圆曲线加密(ECDSA)证书,以进一步提升安全性。

发表评论
登录后可评论,请前往 登录 或 注册