我有 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
就是这样!