Ubuntu系统下OpenVPN客户端通过VLAN分离以太网端口实现网络共享的配置协助
Ubuntu系统下OpenVPN客户端通过VLAN分离以太网端口实现网络共享的配置协助
嘿,我来一步步帮你搞定这个配置!咱们分阶段来,确保每一步都清晰可操作,遇到问题随时停住查细节就行。
一、前期准备与环境确认
首先得搞清楚你的Ubuntu系统里的硬件和软件状态:
- 确认以太网端口名称:打开终端执行
ip link show,找到你的物理以太网接口(比如enp0s3、eth0这类),记下来后面要用。 - 安装OpenVPN客户端:如果还没装,执行
sudo apt update && sudo apt install openvpn -y。 - 准备好你的OpenVPN客户端配置文件(.ovpn格式),比如从VPN服务商那里获取的配置。
二、配置VLAN分离以太网端口
我们需要给物理以太网口创建一个VLAN子接口,用来专门对接要共享VPN的设备:
- 创建VLAN子接口(这里以VLAN ID 10、物理口为
enp0s3为例,你可以改成自己的ID和接口名):sudo ip link add link enp0s3 name enp0s3.10 type vlan id 10 - 启用这个VLAN子接口:
sudo ip link set enp0s3.10 up - 给VLAN子接口设置静态IP(选一个和你本地主网络不冲突的网段,比如
192.168.10.1/24):sudo ip addr add 192.168.10.1/24 dev enp0s3.10 - 为了重启后自动恢复这个配置,你可以编辑
/etc/netplan/00-installer-config.yaml(或者你对应的netplan配置文件),添加以下内容:
然后执行network: ethernets: enp0s3: dhcp4: true vlans: enp0s3.10: id: 10 link: enp0s3 addresses: [192.168.10.1/24] version: 2sudo netplan apply生效配置。
三、配置OpenVPN客户端并绑定路由
接下来确保OpenVPN连接后,VLAN子接口的流量能通过VPN隧道走:
- 把你的OpenVPN配置文件(比如
client.ovpn)复制到/etc/openvpn/client/目录下:sudo cp ~/Downloads/client.ovpn /etc/openvpn/client/client.conf - 启动并设置开机自启OpenVPN客户端服务:
sudo systemctl start openvpn@client sudo systemctl enable openvpn@client - 检查OpenVPN连接状态,确认
tun0接口(VPN隧道接口)已创建:
如果看到ip link show tun0tun0状态是UP,说明连接成功。
四、设置网络共享(NAT转发)
现在需要让Ubuntu扮演路由器的角色,把VLAN子接口的流量通过VPN隧道转发出去:
- 开启IPv4转发功能:
为了重启后保持开启,编辑echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符#,然后执行:sudo sysctl -p - 配置iptables的NAT规则,让VLAN网段的流量通过
tun0接口做地址转换:sudo iptables -t nat -A POSTROUTING -o tun0 -s 192.168.10.0/24 -j MASQUERADE - 保存iptables规则,避免重启后失效:
安装时会弹出提示,选择sudo apt install iptables-persistent -yYes保存当前的iptables规则。
五、配置DHCP服务(让设备自动获取IP)
为了让连接到VLAN端口的设备能自动获取IP和DNS,我们用dnsmasq做轻量DHCP服务器:
- 安装dnsmasq:
sudo apt install dnsmasq -y - 编辑
/etc/dnsmasq.conf,添加以下配置(记得替换成你自己的VLAN接口和网段):# 只在VLAN子接口上提供DHCP服务 interface=enp0s3.10 # 分配IP的范围和租期 dhcp-range=192.168.10.10,192.168.10.50,255.255.255.0,24h # 网关地址(就是VLAN子接口的IP) dhcp-option=3,192.168.10.1 # DNS服务器地址(可以用公共DNS或者VPN提供的DNS) dhcp-option=6,8.8.8.8,8.8.4.4 - 重启dnsmasq服务:
sudo systemctl restart dnsmasq sudo systemctl enable dnsmasq
六、验证配置是否生效
现在可以拿一台设备连接到你的VLAN以太网端口(注意要配置对应VLAN ID的标签,或者如果你的交换机是access模式,直接插线就行),然后:
- 检查设备是否获取到
192.168.10.0/24网段的IP - 尝试ping公共IP(比如
8.8.8.8),看是否能通 - 尝试访问需要通过VPN才能访问的资源,确认是否正常
常见故障排查
如果遇到问题,可以从这几个方向查:
- 检查VLAN子接口状态:
ip addr show enp0s3.10,确认IP正确且接口UP - 检查OpenVPN连接:
sudo systemctl status openvpn@client,看是否有报错 - 检查iptables规则:
sudo iptables -t nat -L,确认POSTROUTING规则存在 - 检查DHCP服务:
sudo systemctl status dnsmasq,或者用dnsmasq --test检查配置文件语法
如果还有具体的报错或者现象,随时告诉我细节,我再帮你调整!
备注:内容来源于stack exchange,提问作者Master
相关产品推荐
相关产品推荐

