You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过路由实现两个局域网单向互通(OpenVPN TAP桥接场景)

如何通过路由实现两个局域网单向互通(OpenVPN TAP桥接场景)

嘿,我来帮你搞定这个TAP桥接场景下的单向访问问题!先明确下默认的拓扑逻辑:PC1/PC2应该是在192.168.100.0/24网段(和你的Raspbian客户端同局域网),PC3/PC4在192.168.72.0/24网段(和Ubuntu服务器同局域网)——如果你的实际网段不一样,直接替换下面的对应参数就行。

咱核心思路是:让PC1/PC2的访问流量通过Raspbian客户端走OpenVPN隧道到Ubuntu服务器,再转发到PC3/PC4网段,同时确保回复流量能正常走回来。以下是分步操作:

第一步:确认TAP桥接的基础连通性

先确保你的Raspbian客户端能直接ping通Ubuntu服务器的192.168.72.72,Ubuntu服务器也能ping通Raspbian客户端的192.168.100.100。这是后续配置的基础,如果这一步不通,先排查OpenVPN的桥接配置是否正确。

第二步:开启两端的IP转发功能

因为需要把跨网段的流量从网卡转发到OpenVPN TAP接口,所以必须开启IP转发:

  • 在Raspbian客户端上
    编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行命令sysctl -p让配置立即生效。
  • 在Ubuntu服务器上
    同样操作,编辑/etc/sysctl.conf开启net.ipv4.ip_forward=1,执行sysctl -p生效。

第三步:给PC1/PC2添加静态路由

要让PC1/PC2知道,访问192.168.72.0/24网段的流量得发往Raspbian客户端(192.168.100.100):

  • 如果是Windows系统的PC:
    打开管理员权限的命令提示符,执行:
    route add 192.168.72.0 mask 255.255.255.0 192.168.100.100 -p
    
    -p是让路由永久生效,重启后不会消失。
  • 如果是Linux系统的PC:
    执行:
    ip route add 192.168.72.0/24 via 192.168.100.100
    
    要是想永久生效,就把这条命令加到对应发行版的网络配置文件里(比如Ubuntu的/etc/netplan配置,或者Debian的/etc/network/interfaces)。
  • 更省心的方式:如果PC1/PC2所在局域网有路由器,直接在路由器上添加这条静态路由,整个网段的设备就不用单独配置了。

第四步:配置Ubuntu服务器的防火墙

Ubuntu默认用ufw防火墙,得允许TAP接口和本地局域网接口之间的流量转发:

  1. 先确认你的OpenVPN TAP接口名称(一般是tap0),以及服务器连接PC3/PC4的网卡名称(比如eth0)。
  2. 执行以下命令放行流量:
    ufw allow in on tap0 out on eth0
    ufw allow in on eth0 out on tap0
    
  3. 还要确保ufw允许IP转发,编辑/etc/ufw/sysctl.conf,设置net.ipv4.ip_forward=1,然后重启ufw:
    ufw reload
    

第五步:确保回复流量能正常返回

因为是单向访问,PC3/PC4不需要主动访问PC1/PC2,但它们的回复流量得能找到回Raspbian客户端的路:

  • 如果PC3/PC4的默认网关就是Ubuntu服务器(192.168.72.72),那这一步不用管,服务器会自动把回复流量转发到TAP接口。
  • 如果PC3/PC4的默认网关是其他路由器,你需要在那个路由器上添加一条静态路由:把192.168.100.0/24网段的流量指向Ubuntu服务器(192.168.72.72)。

做完这些配置后,你就可以在PC1/PC2上测试访问PC3/PC4的IP了,比如ping或者访问服务,应该就能正常通了。

备注:内容来源于stack exchange,提问作者dredkin

火山引擎 最新活动