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

我有这样一个networking

图

我需要每个黑匣子从服务器B的特定IP进行操作。
这两个服务器运行Debian 9.我只能改变networking设置(IP / Gatway等),但没有其他黑箱。 我该怎么做呢?

有什么东西吗? 将这些框的网关设置为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 

我只能改变networking设置(IP / GATWAY等),但没有别的。

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

在原始问题编辑后添加:

是的,像这样的东西可以工作。 但是,这强烈依赖于您的OpenVPN设置。 那些来自VPN子网(10.8.0.0/24)的本地IP应该在你的服务器A上build立,并通过VPN隧道进行路由。 另外不要忘记允许相关的数据包回来。 这通常是这样的规则:

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

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

但是,不要做双SNAT的开销,你也可以考虑设置你的OpenVPN,允许直接从服务器B路由192.168.1.0/24子网。在这个configuration上,Internet上有多个教程。

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