openvpn ping 局域网客户端

openvpn ping 局域网客户端

在这种情况下我需要帮助:

我的 openvpn 服务器上有一个 tap0 接口,ip 为 10.22.8.1

我的 eth0 接口是 192.168.1.155


路由表:

192.168.1.0-0.0.0.0-255.255.255.0-eth0

10.22.8.0-10.22.8.1-255.255.255.0-tap0

0.0.0.0-192.168.1.10-0.0.0.0-eth0


通过以下规则,我可以从我的局域网 ping 到 vpn 客户端:

iptables -v -t nat -A PREROUTING -i eth0 -d 192.168.10.0/24 -j NETMAP --to 10.22.8.0/24

iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE

我在 lan 客户端中有一个到我的 vpn 服务器的路由 192.168.10.0。Tcpdump 显示数据包从 eth0 重定向到 tap0,并且 netmap 正常工作。


但当我尝试相反的操作时,我无法从 vpn 客户端 ping 通我的局域网

iptables -v -t nat -A PREROUTING -i tap0 -d 10.22.8.0/24 -j NETMAP --to 192.168.1.0/24

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

tcpdump 显示数据包到达 tap0,但未到达 eth0。这就像 netmap 规则不起作用一样。


你能帮帮我吗?我做错了什么?

答案1

你这样做是错的。

第一 - 使用第 3 层连接而不是第 2 层进行 VPN。节省流量。

第二步 - 使用 brouting 来完成代理 arp 并将本地子网的 ip 地址分配给 vpn 客户端 - 因此它们看起来就像是本地的

第三步 - 或者使用路由并将路由设置为 192.168.1.0/network 中所有系统上的 10.22.8/24 子网中的客户端或者只需使用 vpn 系统作为默认网关即可避免路由问题......

使用 brouting:

  • 在 Linux 路由器上启用 proxy_arp: echo 1 > /proc/sys/net/ipv4/conf/proxy_arp
  • 如果没有自动添加子网路由到 eth0
  • 从openvpn将本地子网的一个子网的路由添加到tun设备。

    假设我们将使用 vpn 上主机的最后 16 个 IP 地址(192.168.1.240 - 192.168.1.255),这意味着我们有一个 28 位子网 192.168.1.240/28。创建 tun 设备静态(openvpn --mktun),然后将 vpn 子网的路由添加到设备 ip route add 192.168.1.240/28 dev tun0

在此之后,在启用 ip 转发和代理 arp 后,linux 系统将“broute”所有来自本地客户端的请求到 vpn 端的客户端,反之亦然。

并且您拥有一个第 3 层 vpn(速度更快、流量更少),具有第 2 层连接性并且可以完全透明地访问所有系统。

过滤和其他一切都可以通过 iptables 完成。

韩国,

格罗米特

答案2

你好,非常感谢你的帮助。最后我决定遵循第三点。

我的公司局域网中的客户端配置了双 IP。

正常的 192.168.1.X 和 vpn 的 10.22.8.X


VPN 客户端在两个网络中都有双 IP:

接口

inet 192.168.1.31/24 brd 192.168.1.255 范围全局 eth1

inet 10.22.8.243/24 范围全局 eth1

路由表

10.22.8.240 - 10.22.8.243 - 255.255.255.240 - UG - eth1

10.22.8.0-*-255.255.255.0-U-eth1


服务器有可用的proxy_arp、arp_accept和ip_forward。目前运行正常。

我非常感谢你的帮助,Gromit。

相关内容