CentOS 6.0
我正在研究 iptables 并且对 FORWARD 和 OUTPUT 链之间的区别感到困惑。在我的培训文档中,它指出:
如果要附加到 (-A) 或从 (-D) 删除链,则需要将其应用于沿三个方向之一传输的网络数据:
- INPUT - 根据此链中的规则检查所有传入数据包。
- OUTPUT - 根据此链中的规则检查所有传出数据包。
- FORWARD - 发送到另一台计算机的所有数据包都根据此链中的规则进行检查。
这让我很困惑,因为在我看来,发往主机的数据包应该是传出的。那么是否存在数据包将前往另一台计算机但不会“传出”的情况?iptables 如何区分两者?
我一直在阅读 redhat iptables 文档,但无法弄清楚以下几行的作用:
... -j REJECT **--reject-with icmp-host-prohibited**
... -j REJECT **--reject-with icmp-host-prohibited**
Run Code Online (Sandbox Code Playgroud) archlinux wiki 上有一个 iptables 规则的例子:
# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT …Run Code Online (Sandbox Code Playgroud) 我们有一个 Ubuntu 12.04 服务器,在端口 80 上有 httpd,我们想限制:
我们如何用 iptables 做到这一点?
我想允许传入的 FTP 流量。
CentOS 5.4:
这是我的/etc/sysconfig/iptables文件。
# Generated by iptables-save v1.3.5 on Thu Oct 3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct 3 21:23:07 2013
Run Code Online (Sandbox Code Playgroud)
此外,默认情况下, ip_conntrack_netbios_n 模块正在加载。
#service iptables restart …Run Code Online (Sandbox Code Playgroud) 如何允许某些 ips 并阻止 iptables 中的所有其他连接?
我遇到了以下配置文件:
# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# …Run Code Online (Sandbox Code Playgroud) 在历史上,我会简单地编辑一个文件,然后
重新启动整个服务器。
我会克隆打开端口 22 的行,
将其更改为 80,然后保存文件.. 并重新启动
整个系统,以便 iptables 以打开端口 80 开始。
但最近..该文件不再存在
于我的centos 6.5操作系统中
谷歌上的大多数答案都表明我必须与 iptables 交互
才能启用和禁用端口。
是否可以不与 iptables 交互,而
只是将您面前的所有内容视为一个可编辑文件?
我正在尝试使用 netcat 从一台虚拟机连接到另一台虚拟机的端口 25,但它告诉我,no route to host尽管我可以 ping。我确实将防火墙默认策略设置为丢弃,但我有一个例外,可以接受该特定子网上端口 25 的流量。我可以使用 nc 在端口 25 上从 VM 3 连接到 VM 2,但不能从 VM 2 连接到 3。
这是我的 VM2 防火墙规则的预览
这是我的 VM 3 防火墙规则的预览
当我显示我拥有的侦听服务时*:25,这意味着它正在侦听所有 ipv4 ip 地址和:::25ipv6 地址。我不明白错误在哪里以及为什么不工作两个防火墙规则都接受端口 25 上的流量,因此它应该连接。我尝试比较两者之间的差异以了解为什么我可以从 vm3 连接到 vm2 但配置都是相同的。关于可能是什么问题的任何建议?
更新停止 iptable 服务解决了问题,但我仍然需要存在这些规则。
我知道 linux 有 3 个内置表,每个表都有自己的链,如下所示:
过滤器:路由前、转发、后路由
NAT:预路由、输入、输出、后路由
MANGLE:预路由、输入、转发、输出、后路由
但我无法理解它们是如何遍历的,如果有的话,以什么顺序。例如,它们在以下情况下如何遍历: