Ubuntu下配置VPN与NAT实现内网访问外网的完整指南
在现代网络环境中,许多企业或家庭用户需要通过Ubuntu系统搭建一个既安全又高效的网络代理环境,尤其是在使用虚拟私有网络(VPN)的同时,还需要将内网主机通过NAT(网络地址转换)方式共享公网IP访问互联网,本文将详细介绍如何在Ubuntu服务器上配置OpenVPN服务,并结合iptables实现NAT转发,从而让局域网内的设备通过该Ubuntu主机安全地访问外网。
确保你已经安装并配置好Ubuntu操作系统(推荐使用20.04 LTS或22.04 LTS版本),我们以OpenVPN作为VPN服务端,因为它开源、稳定且易于部署,你可以使用apt命令安装OpenVPN及相关工具:
sudo apt update sudo apt install openvpn easy-rsa -y
安装完成后,初始化证书颁发机构(CA),这是OpenVPN通信的基础,执行以下命令:
make-cadir /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa build-ca nopass sudo ./easyrsa gen-req server nopass sudo ./easyrsa sign-req server server sudo ./easyrsa gen-dh sudo openvpn --genkey --secret ta.key
这些步骤完成后,你会得到用于加密通信的证书和密钥文件,在/etc/openvpn/server.conf中创建一个配置文件,关键参数如下:
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
保存配置后,启用OpenVPN服务:
sudo systemctl enable openvpn@server sudo systemctl start openvpn@server
客户端可以通过导入证书连接到这个OpenVPN服务。
接下来是NAT配置,为了让内网主机(比如192.168.1.0/24)通过这台Ubuntu主机上网,我们需要开启IP转发,并设置iptables规则:
sudo sysctl -p # 设置NAT规则 sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
注意:eth0是你Ubuntu服务器连接外网的网卡名称,可通过ip addr查看,若使用的是无线网卡或其他接口,请替换为实际名称。
将iptables规则持久化保存,防止重启失效:
sudo apt install iptables-persistent -y sudo netfilter-persistent save
至此,你的Ubuntu服务器已成功部署为一个支持VPN接入和NAT转发的网络节点,内网设备可配置为使用该Ubuntu主机的IP作为网关,即可通过OpenVPN隧道安全访问互联网,此方案适用于小型办公室、远程办公、家庭网络扩展等场景,兼顾安全性与实用性,是Linux网络工程师值得掌握的核心技能之一。

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN

