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网络工程师值得掌握的核心技能之一。

启用IP转发  第1张

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