用 iptables 绕过端口转发
Wrapping one's head around port forwarding with iptables
老实说,我了解正在发生的事情的一部分。就像我需要输入规则,以使用特定过滤器转发一样。但是我需要一个规则,两个,三个吗?为什么有些人 FORWARD
而其他人也 OUT
而有些人甚至 IN
。 SYN
、ESTABLISHED
、RELATED
是否需要单独的规则? conntrack
是一个单独的包吗?为什么一位向导会 -t nat
而其他所有向导都不会?
这真的很痛苦,因为每个人都提供了几乎可复制和粘贴的指南,但没有足够的解释他们实际提供的解决方案,或者如果 reader 的设置(哦惊喜)是并非 100% 相同。
我主要想实现的是:
- 接受 *:443 上所有人的连接
- 将所有请求发送到 1.2.3.4:443(除了我没有人可以到达 1.2.3.4)
- 使请求者也能接收来自 1.2.3.4 的响应
- 在 dmesg 中查看内容是否有效,但如果没有必要,则不会更多
请解释你为什么做或不做某事。我真的很想掌握这些东西。谢谢!
我找到的最佳解释是 archwiki, even with further references to more in depth descriptions and diagrams. One real in depth guide I found through archwiki is this iptables tutorial。
例如,here (Simple stateful firewall)是一个详细的例子,解释了所有的决定。
因为我是视觉学习者,所以我还发现 this youtube video 非常有帮助,它显示和解释了一个 运行 示例,其中包含两个几乎任何人都可以在家中重现的 VM。
现在我觉得我处于一个水平,我主要只需要参考下图,它显示了包如何遍历表和链:
进一步阅读:
- 讨论是否应该drop or reject
- the internet protocols RFC
- NEW and SYN 包发生了什么事?
- 为什么有些教程使用 conntrack and others use state?
旁注:
- 我总是很困惑,为什么有些指南包含
ESTABLISHED,RELATED
规则而有些则没有。这些规则是否存在决定了现有网络流量是否被切断。例如,如果您使用 ssh 会话连接到机器,那么如果您的 ssh 会话不会因添加 iptables 规则而被终止,那就太好了,因此有一个允许您的 ESTABLISHED
连接的规则很好。 RELATED
包例如响应 ping 或网络信息包 (ICMP)。
- Simple stateful firewall example也解释了不同nmap测试的区别
- 也不错overview
老实说,我了解正在发生的事情的一部分。就像我需要输入规则,以使用特定过滤器转发一样。但是我需要一个规则,两个,三个吗?为什么有些人 FORWARD
而其他人也 OUT
而有些人甚至 IN
。 SYN
、ESTABLISHED
、RELATED
是否需要单独的规则? conntrack
是一个单独的包吗?为什么一位向导会 -t nat
而其他所有向导都不会?
这真的很痛苦,因为每个人都提供了几乎可复制和粘贴的指南,但没有足够的解释他们实际提供的解决方案,或者如果 reader 的设置(哦惊喜)是并非 100% 相同。
我主要想实现的是:
- 接受 *:443 上所有人的连接
- 将所有请求发送到 1.2.3.4:443(除了我没有人可以到达 1.2.3.4)
- 使请求者也能接收来自 1.2.3.4 的响应
- 在 dmesg 中查看内容是否有效,但如果没有必要,则不会更多
请解释你为什么做或不做某事。我真的很想掌握这些东西。谢谢!
我找到的最佳解释是 archwiki, even with further references to more in depth descriptions and diagrams. One real in depth guide I found through archwiki is this iptables tutorial。
例如,here (Simple stateful firewall)是一个详细的例子,解释了所有的决定。
因为我是视觉学习者,所以我还发现 this youtube video 非常有帮助,它显示和解释了一个 运行 示例,其中包含两个几乎任何人都可以在家中重现的 VM。
现在我觉得我处于一个水平,我主要只需要参考下图,它显示了包如何遍历表和链:
进一步阅读:
- 讨论是否应该drop or reject
- the internet protocols RFC
- NEW and SYN 包发生了什么事?
- 为什么有些教程使用 conntrack and others use state?
旁注:
- 我总是很困惑,为什么有些指南包含
ESTABLISHED,RELATED
规则而有些则没有。这些规则是否存在决定了现有网络流量是否被切断。例如,如果您使用 ssh 会话连接到机器,那么如果您的 ssh 会话不会因添加 iptables 规则而被终止,那就太好了,因此有一个允许您的ESTABLISHED
连接的规则很好。RELATED
包例如响应 ping 或网络信息包 (ICMP)。 - Simple stateful firewall example也解释了不同nmap测试的区别
- 也不错overview