我了解IPTables 中的作用prerouting和postrouting链的作用,但我无法理解作用output和input链的作用。
因此,在 NATing 中,我们使用DNATin更改目标 IP 或端口prerouting,或使用SNAT或MASQURADEin更改源 IP 以获取对正确接口的回复postrouting。
在这种情况下,我发现没有使用input和output链。有人可以快速向我解释它们(input和output)吗?
INPUT和OUTPUT链遍历的交付,并从本地机器上运行的应用程序发送的数据包。
如果应用程序发出一个数据包,它会遍历
app -> OUTPUT -> POSTROUTING -> interface
Run Code Online (Sandbox Code Playgroud)
相反,传递给应用程序的数据包遍历
interface -> PREROUTING -> INPUT -> app
Run Code Online (Sandbox Code Playgroud)
当转发的数据包遍历时
interface -> PREROUTING -> FORWARD -> POSTROUTING -> interface
Run Code Online (Sandbox Code Playgroud)
请注意,这MASQUERADE只是 的一种特殊情况SNAT,其中源地址取自接口。
另请参阅此图片或您可以在iptables教程中找到的许多类似图片。
编辑
如果要对DNAT从应用程序发送的数据包进行处理,则必须使用OUTPUT,因为DNAT仅适用于PREROUTING,并且来自应用程序的传出数据包永远不会遍历PREROUTING。
同样,对于SNAT,INPUT并且POSTROUTING在发送到应用程序,虽然我不能确定的当前状态的应用案例SNAT中INPUT,它可能被打破,而不是实际的工作。
由于大多数伪装发生在路由器转发数据包中,因此您不会经常看到此类应用程序。
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |