iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
我尝试去理解这一-m state --state NEW
部分。
搜索手册页,如果我错了请纠正我
NEW
意味着数据包已开始新的连接,或与尚未在两个方向上看到数据包的连接相关联-m
= 匹配--state
,其中 state 是一个以逗号分隔的连接状态匹配列表。可能的状态有 INVALID,表示由于某种原因(包括内存不足和与任何已知连接都不对应的 ICMP 错误)无法识别数据包;ESTABLISHED,表示数据包与一个在两个方向上都看到数据包的连接相关联;NEW,表示数据包已启动新连接,或者与一个在两个方向上都看不到数据包的连接相关联;RELATED,表示数据包正在启动新连接,但与现有连接相关联,例如 FTP 数据传输或 ICMP 错误。UNTRACKED,表示数据包根本没有被跟踪,如果您在原始表中使用 NOTRACK 目标,就会发生这种情况。
我的问题是:这两个命令有什么区别
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
iptables -A INPUT -p tcp --dport 7000:7010 -j ACCEPT
答案1
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
这是使用状态防火墙技术。通过这种方式,iptables 可以跟踪每个连接的状态,例如 NEW、ESTABLISHED、RELATED 等等。
新的连接的状态是首次采购无论是从本地接口还是其他尝试连接到您的盒子的机器,如手册页中所述。
已确立的是数据包被目标主机确认的时间。因此数据包在两个方向上都可见。
使用状态防火墙技术,当您需要添加更多防火墙规则时,您将拥有更多的控制权,但需要的代码行更少。
iptables -A INPUT -p tcp --dport 7000:7010 -j ACCEPT
此规则仅允许 iptables 的 INPUT 链中到端口 7000:7010 的新入站连接,但不跟踪数据包的状态以供日后使用。
有关状态防火墙的更多信息:http://en.wikipedia.org/wiki/Stateful_firewall