如何设置输入接口为输出接口

如何设置输入接口为输出接口

我有 IP XXXX 的 eth0 和 IP YYYY 的 eth0:0

我的目标是,如果我连接到 eth0,则输出 ip 应该是 XXXX,如果我连接到 eth0:0,则输出 ip 应该是 YYYY

例子:

VPN 客户端连接到 eth0(IP XXXX)-> IP XXXX

VPN 客户端连接到 eth0:0(YYYY) -> IP YYYY

VPN 客户端连接到 eth0:1(ZX.ZX.ZX.ZX) -> IP ZX.ZX.ZX.ZX

VPN 客户端连接到 eth0:2(ZY.ZY.ZY.ZY) -> IP ZY.ZY.ZY.ZY

VPN 客户端连接到 eth0:3(ZA.ZA.ZA.ZA) -> IP ZA.ZA.ZA.ZA

现在它总是 XXXX

我尝试过 iptables,但是它不起作用。

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

ip_forward 为 1

还尝试了 IP 路由

我认为正确的方法是用路线来设置?

答案1

您需要为 VPN 客户端进行伪装 (NAT)。例如:

iptables -A POSTROUTING -s (subnet of vpn clients) -j MASQUERADE

例如,如果您的 vpn 服务器将客户端分配给 192.168.1.0/24,请将其作为 -s 参数。

答案2

这与默认路由有关,与 iptables 无关。如果您想切换默认网关,请运行以下命令:

ip -4 route del default
ip -4 route add default via <gateway ip> dev <interface>

网关 IP 是该接口子网的网关或路由器。因此,如果 eth1 位于 YYYY 上,而网络掩码为 255.255.255.0,则网关需要位于同一子网(例如 YYY* 上的某个子网)。除非您使用专门的设置,否则一次只能有一个默认网关。

答案3

解决方案是:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to BB.BB.BB.BB

BB.BB.BB.BB = 源 IP

就是这样!

相关内容