Ubuntu 服务器 / IpTables / 端口转发 / NAT

Ubuntu 服务器 / IpTables / 端口转发 / NAT

我是通过 StackOverflow 被推荐到这里的。

我正在使用 IpTables 将一台服务器上的传入端口转发到外部服务器(不在 LAN 上)和同一端口。我遇到的问题是我必须使用 MASQUERADE,否则它不会转发。因此,我服务器上的所有用户都将我的第一个服务器 IP 作为他们的 IP。

这是我的 iptables 配置的细目。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:25565 to:192.241.156.238:25565

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

如能得到任何帮助我将不胜感激,这样我就可以从一台服务器转发到另一台服务器。

另外,我有个问题,当我这样做时,是不是只是转移了连接,然后所有来回的数据都在两台电脑之间传输?还是我的带宽增加了一倍?

答案1

伪装工作正常,并且是必需的。如果外部服务器将原始本地 IP 地址作为源地址接收,它将不知道将答案发回何处,或者最多会尝试通过其本地网络发送答案。具有伪装的机器路由处理所有连接,然后将答案重定向到正确的本地机器。

相关内容