使用OpenVPN异地组网-下篇:访问客户端内网

使用OpenVPN异地组网-下篇:访问客户端内网

1. 前言本教程分为上下两篇,目录:

使用OpenVPN异地组网-上篇:安装与基本配置使用OpenVPN异地组网-下篇:访问客户端内网上篇中,我们完成了OpenVPN的安装和基本配置,这篇我们来实现访问家庭内网。

网络结构图:

2. VPN网关配置连接到内网的Linux服务器上进行操作。

2.1 打开IP转发编辑文件 /etc/sysctl.conf,找到如下内容取消注释,如果没有可以自行添加:

net.ipv4.ip_forward=12.2 防火墙规则使用命令 ip addr 查看本机网卡和openvpn的网卡,比如我这里,本机网卡是 eth0,openvpn的网卡是 tun0。

iptables -A FORWARD -i tun0 -o eth0 -s 192.168.230.0/24 -d 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.0.0/24 -d 192.168.230.0/24 -j ACCEPT这里只配置动态ip网段的转发规则,没有配置静态网段的,因为我的所有使用静态ip的VPN客户端没有访问内网的需求,如果有需要,可以自行添加。

2.3 NAT伪装(可选)重要

这一步为可选操作,如果选择使用NAT伪装,那么会简单很多,省很多事儿。你也不用给每个内网设备添加一个静态路由。如果不想太折腾,建议最好是使用NAT伪装。

iptables -t nat -A POSTROUTING -s 192.168.230.0/24 -d 192.168.0.0/24 -j MASQUERADE同样的,这里也只配置动态ip网段。

3. 内网设备配置重要

如果你选择使用NAT伪装,那么这一步就可以直接跳过!

注意

你需要给内网每台设备都添加一条静态路由。当然,如果没有访问某台内网设备的需求,则可以不添加,比如手机、电视、智能家居之类的。

为内网其它设备添加静态路由。

因为我们家中内网的设备,默认网关是192.168.0.1,但是如果流量从VPN用户发来,内网中的其它设备由于没有连接VPN,会将返回的数据发给192.168.0.1网关,192.168.0.1无法处理这个数据包,导致响应无法到达 VPN 用户。所以我们需要添加一条路由,告诉设备,来自VPN这个网段的数据,应该发送给192.168.0.200网关。

下面添加的路由中 192.168.0.200 就是 Linux服务器 内网ip。

3.1 Windowsroute add 192.168.230.0 mask 255.255.255.0 192.168.0.200如果你想重启后仍然生效,加上 -p 参数:

route -p add 192.168.230.0 mask 255.255.255.0 192.168.0.200查看现有路由:

route print删除一条路由:

route delete 192.168.230.03.2 Linuxsudo ip route add 192.168.230.0/24 via 192.168.0.200如果你想开机自动添加,可以写入 /etc/network/interfaces、/etc/netplan、或 /etc/rc.local,具体方式取决于你的发行版。

以 Debian12 为例:

编辑 /etc/network/interfaces 文件,添加 up 和 down 语句来设置和移除静态路由:

auto eth0

iface eth0 inet static

address 192.168.1.10

netmask 255.255.255.0

gateway 192.168.1.1

up ip route add 192.168.230.0/24 via 192.168.0.200

down ip route del 192.168.230.0/24 via 192.168.0.200上述配置将在接口 eth0 启动时添加一条到 192.168.2.0/24 网络的静态路由,下一跳为 192.168.1.2;在接口关闭时删除该路由。

保存并关闭文件后,重启网络服务以应用更改:

sudo systemctl restart networking查看当前路由:

ip route删除一条路由:

sudo ip route delete 192.168.230.0/24 via 192.168.0.200注意 via 后面是你当时设置的下一跳(VPN 客户端的内网 IP)

3.3 macOS注意

由于我没有 mac 电脑,无法验证是否有效

sudo route -n add 192.168.230.0/24 192.168.0.200重启后会失效,想要永久保留可以通过 launchd 或 shell 脚本自启动。

删除一条路由:

sudo route -n delete 192.168.230.0/24 192.168.0.2004. 最后完成上述操作之后,我们就能成功通过VPN,在异地访问到内网的其它设备了🎉。

相关推荐