化妆舞会的用途是什么?

Arc*_*T3K 3 networking linux redirection iptables

我的服务器上使用了一个简单的重定向,并带有 iptables 规则:

$ iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 13.37.42.1:80

$ iptables -t nat -A POSTROUTING -j MASQUERADE

我不明白第二行(化妆舞会)的用处。为什么/为什么它在这个例子中有用?

编辑:为什么 - 不是理论上的,而是现实中的 - 你会在这样的例子中使用它吗?

谢谢

Dan*_*l B 12

MASQUERADE顾名思义:它将主机后面的所有内容隐藏在 xe2x80x9c 后面。当您只有一个上行链路 IP 地址时,您\xe2\x80\x99d 这样做是为了向多台主机提供 Internet。该技术用于大多数消费级互联网接入路由器,称为 \xe2\x80\x9cNAT\xe2\x80\x9d。

\n

当主机 A 通过MASQUERADE路由器 R 联系服务器 S 时,服务器将无法看到来自主机 A 的连接。 相反,对于服务器来说,它看起来像是与路由器 R 通信然而,路由器 R 知道该连接最初来自主机 A,并将相应地转发消息。主机 A 知道它连接到服务器 S 并且服务器 S 发送了响应。

\n

在 IPTables 中,您\xe2\x80\x99d 通常仅在面向 Internet 的接口上使用此功能。像这样的东西:

\n
-t nat -A POSTROUTING -o eth0 -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n

这意味着每个被路由并离开的 IP 数据包eth0都会得到处理。

\n

当在您的示例中使用时,它看起来13.37.42.1(主机 S)就像您的计算机(以下称为主机 Y)发起了连接。这意味着响应将到达主机 Y,主机 Y 将其转发到真正的目的地(主机 A)。对于主机 A 来说,消息看起来好像来自主机 Y。它无法看到或知道主机 S 实际发送了该消息,因为MASQUERADE这里是双向的。

\n

如果不使用此规则,主机 S 将看到一条源自主机 A 的消息。因此,它会将响应直接发送到主机 A。但是,主机 A 不认识主机 S。它连接到主机 Y 并期望收到从那里得到回应。因此,来自主机 S 的响应被视为未经请求的流量并被丢弃。连接将超时。

\n