匹配指定链接状态的数据包链接状态有以下几种:
- NEW:新创建的连接
- ESTABLISHED 已经建立的连接
- RELATED:跟已经创建的连接相关的连接
- INVALID:非正常状态
- DNAT:如果一个连接其目标地址被nat表PREROUTING链中的规则修改了 , 即是这个状态
- SNAT:如果一个连接其源地址被nat表中的规则修改了 , 即是这个状态
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
即只对已经建立的连接和由此产生的相关连接进行放行【iptables使用详解】有些版本的linux , 对应的module不是conntrack , 而是state 。对应指定状态的参数不是ctstate 而是
--state
。所以 , 上述写法在有些linux版本中需要替换成iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
一般来讲 , 这些规则不可能单独出现 , 如果都不允许任何NEW状态连接建立 , 那哪来的已建立连接和相关连接?所以正确的做法一般是:iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //这条规则允许已经建立的连接和相关连接iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT //新建链接如果是访问22号端口 , 则允许访问
改变某个链的默认规则一般每个链都有默认规则 , 即该链没有任何规则或者没有任何一条规则被匹配的情况下 , 对数据的放行策略是怎么样的 。Chain INPUT (policy ACCEPT)...Chain FORWARD (policy ACCEPT)...Chain OUTPUT (policy ACCEPT)..
以filter表的三个链为例 , 默认是ACCEPT 。但是我们可以改变这个模型规则 , 比如默认规则就是DROPiptables -t filter -P INPUT DROP
回环地址的访问始终允许iptables -t filter -A INPUT -i lo -j ACCEPT //在本地网络通信的所有包 , 都放行
-i
表示input 输入网口 。lo
表示本地的网络接口 。这里没有指定-s
或 -d
地址 , 表示在回环网络上通信的所有端口 , 都放行 , 这样我们本机的web service , 访问本机的mysql数据库才不会有问题 。当然一般INPUT的默认规则是ACCEPT , 你不用配置上述的规则 , 只要没有其它规则去限制 , 那么本机回环地址之间的端口通信也是放行的 , 除非你对INPUT链默认开启了拒绝策略在使用某个网络时 , 不响应请求
iptables -A OUTPUT -o wlan0 -d 121.18.238.0/29 -j DROP
上述配置含义:所有发给目标网口是wlan0 且 目标ip是121.18.238.0/29 地址的包 , 都会被丢弃 。-o
表示 数据包的目标网口 。在linux命令行中 , 使用
ifconfig
,就能看见当前已连接的所有网络接口
文章插图
规则的取反配置上述规则配置 , 一般都是满足某某条件 , 做什么动作 。除此之外 , 我们还可以配置 , 如果不满足某某条件 , 则做某个动作 。
iptables -A INPUT -p tcp -m multiport ! --dports 22,80,443 -j DROP
这个不满足则
的取动作 , 是通过感叹号来实现的 。上述命令的含义是:非22,80,443的端口 , 我们直接丢弃 。当然这条命令之前 , 应该要配置一条规则:
经验总结扩展阅读
- 华为车载智慧屏值得买吗_华为车载智慧屏使用评测
- 夏天使用空调怎么更省电 空调不制冷解决方法
- Pytest进阶使用
- RAID5 IO处理之条带读代码详解
- RAID5 IO处理之写请求代码详解
- RAID5 IO处理之重构代码详解
- RAID5 IO处理之replace代码详解
- 法国大宝能当晚霜使用吗?
- 如何使用 pyqt 读取串口传输的图像
- 你们觉得华为手机卡不卡,使用体验如何(华为加装nm卡缺点)