使用 iptables nat 为局域网 PC 重定向网关

使用 iptables nat 为局域网 PC 重定向网关

我有一台 Linux 服务器,用作家庭网络的网关。它有两个以太网设备:

  • p3p1:WAN,公网IP地址a.b.c.d
  • p2p1:LAN,私有 IP 地址10.0.3.1/24

它还通过点对点OpenVPN 隧道连接到远程 Linux 服务器(我也管理该服务器)。这将添加设备

  • tun2:VPN,私有IP地址10.2.0.2/32

问题是:如何让来自 LAN 上客户端的所有流量通过 OpenVPN 隧道重定向?

我可以重定向全部使用 VPN 客户端配置选项 来限制流量(包括来自网关服务器的流量)redirect-gateway def1。但这不是我想要的。

有没有办法使用 IPTables NAT 来做到这一点?

谢谢!

答案1

以下是您应该执行的步骤:

  1. 第一步,本地 DHCP 服务器必须将客户端默认网关配置为服务器地址10.0.3.1
  2. 然后使用路由策略数据库将本地网络流量路由到后面的 VPN 默认网关p2p1,并将服务器流量路由到后面的默认网关p3p1
  3. 之后,您将需要MASQUERADE处理来自本地网络并进入 VPN 的流量:
# enable ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# configure iptables
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -d 10.2.0.2/32 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -i p2p1 -o tun2 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

答案2

我设法使用基于策略的 IP 路由来做到这一点,正如 A. Fendt 在评论中提到的那样:

  1. 插入新的 IP 路由表:

$ echo "200 vpndef1" | sudo tee -a /etc/iproute2/rt_tables

  1. 添加 VPN 重定向的路由:

$ sudo ip route add 10.0.3.0/24 via 10.0.3.1 dev p2p1 table vpndef1 $ sudo ip route add default via 10.2.0.1 dev tun2 table vpndef1

  1. 插入新规则,将 LAN 流量引导至新的路由表:

$ sudo ip rule add from 10.0.3.0/24 lookup vpndef1

相关内容