我有一个这样的网络:
我需要每个黑盒从服务器 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 端口转发。