这是我的场景:
设置
有3台机器:
A
: 在互联网上 : 有 IP ( a.a.a.a
),端口已pa
打开
B
:我的服务器/网关:有 IP ( b.b.b.b
),端口已pb
打开
C
: 在互联网上 : 有 IP ( c.c.c.c
),端口已pc
打开
约束条件
机器的所有者A
通过 port 提供服务,必须通过 portpa
在机器上访问该服务。问题是, 的所有者只能允许直接连接到我的服务器,机器的端口。C
pc
A
B
pb
注意,A
并且C
在互联网上,所以实际上,我必须充当互联网上两台机器之间的网关(我在大多数防火墙文档中找到的文献涉及充当网关)在互联网和本地之间网络)。
要求
我的任务是确保我为机器提供通过我的服务器C
提供的服务,以这样的方式,来自结束的流量和来自结束的流量。A
B
A:pa
C:pc
C:pc
A:pa
那么,我怎样才能实现这一点,比如使用iptables
或其他 Linux / Unix 实用程序?有可能吗?
假设的解决方案:
这是我想到的一个想法,但不确定它是否合法或有意义:
iptables -t nat -A PREROUTING -p tcp --source a.a.a.a --source-port pa \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination c.c.c.c:pc
和
iptables -t nat -A PREROUTING -p tcp --source c.c.c.c --source-port pc \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination a.a.a.a:pa