通过VPN路由本地网络,分配多个外部IP

通过VPN路由本地网络,分配多个外部IP

我有一个这样的网络:

图表

我需要每个黑盒从服务器 B 的特定 IP 运行。
两个服务器都运行 Debian 9。我只能更改网络设置(IP/网关等),但不能更改这些黑盒上的其他设置。我该怎么做?

有什么办法吗?将盒子的网关设置为192.168.1.100

服务器 A

iptables -A FORWARD -s 192.168.1.0/24 -o tun0 -j ACCEPT  
iptables -t nat -A POSTROUTING -s 192.168.1.101  -j SNAT --to 10.8.0.9  
iptables -t nat -A POSTROUTING -s 192.168.1.102  -j SNAT --to 10.8.0.13  
iptables -t nat -A POSTROUTING -s 192.168.1.103  -j SNAT --to 10.8.0.18  
iptables -t nat -A POSTROUTING -s 192.168.1.104  -j SNAT --to 10.8.0.22  

服务器 B

iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT  
iptables -t nat -A POSTROUTING -s 10.8.0.9  -j SNAT --to xxx.xxx.xxx.xxx
iptables -t nat -A POSTROUTING -s 10.8.0.13  -j SNAT --to yyy.yyy.yyy.yyy    

答案1

我只能更改网络设置(IP/网关等),但不能更改其他设置。

那么这是不可能的。你的问题没有说明你是否需要双向连接(即有可从互联网访问的“黑匣子”),但无论如何,这至少需要 iptables 进行 SNAT 和使用 iproute2 进行高级基于策略的路由。

原始问题编辑后添加:

是的,类似这样的方法可以奏效。但这在很大程度上取决于您的 OpenVPN 设置。来自 VPN 子网 (10.8.0.0/24) 的本地 IP 应在您的服务器 A 上设置并通过 VPN 隧道路由。另外,不要忘记允许相关数据包返回。这通常使用类似以下规则来完成:

iptables -A FORWARD -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

在服务器 A 上。在服务器 B 上也有相应的规则-i eth0。并且您必须将服务器 A 设置为“黑匣子”的默认网关。

但是,除了进行双 SNAT 的开销之外,您还可以考虑设置 OpenVPN 以允许将 192.168.1.0/24 子网直接路由到服务器 B 和从服务器 B 路由。互联网上有关于此配置的多个教程。

答案2

您无法像这样“分配”外部 IP。但是,您可以使用 iptables 和 SNAT 模块进行 IP NAT 或 TCP/UDP 端口转发。

相关内容