赞
踩
pkts:对应规则匹配到的报文的个数。
bytes:对应匹配到的报文包的大小总和。
target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。
prot:表示规则对应的协议,是否只针对某些协议应用此规则。
opt:表示规则对应的选项。
in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。
out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。
source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。
destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。
iptables --line-numbers -nvL -t filter iptables --line-numbers -nvL -t filter FORWARD 添加 iptables -t filter -I INPUT -s 192.168.1.2,192.68.1.1 -j DROP #向前添加 iptables -t filter -I INPUT 2 -s 192.168.1.2,192.68.1.1 -j DROP #向前添加 iptables -t filter -A INPUT 2 -s 192.168.1.2 -j DROP #向后添加 iptables -t filter -A INPUT ! -s 192.168.1.2 -j ACCEPT #取反,表示除了这个ip的都接受,但是这个ip依然能ping通,因为未指定此ip的规则,系统会默认匹配默认规则 删除 iptables --line-numbers -nvL #查询序号 iptables -D INPUT 1 iptables -D INPUT -s 192.168.1.2 -j DROP 删除表所有规则 iptables -t 表明 -F 链名 修改规则 iptables -t filter -R INPUT 1 -s 192.168.1.2 -j REJECT 修改默认规则 iptables -t filter -P FORWARD DROP 保存 iptables-save > /etc/iptables.rules 或者直接编辑 /etc/iptables.rules后 iptables-restore < /etc/iptables.rules 首次保存时需添加 vim /etc/network/if-pre-up.d/iptables #打开 #!/bin/bash iptables-restore < /etc/iptables.rules chmod +x /etc/network/if-pre-up.d/iptables
#添加目的地址
iptables -t filter -I INPUT -s 192.168.1.1 -d 192.168.255.129 -j DROP #从192.168.1.1发生至192.168.255.129的报文将丢弃
iptables -t filter -I INPUT -s 192.168.1.1 -d 192.168.255.129 -p tcp -j DROP #从192.168.1.1发生至192.168.255.129的tcp协议会被丢弃,-p后参数为tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
-i 指定流入网卡 -o指定流出网卡
-m 指定扩展匹配条件,若不指定,默认和-p相同 --dport 指定目标端口,--sport 指定源端口,必须和-p,-m配合使用
指定端口可使用22:25形式,表示22,23,24,25,或:80,表示从1到80端口所有端口
#若指定多个离散端口,则需要使用 -m multiport模块,如
iptables -t filter -I INPUT -s 192.168.255.1 -p tcp -m multiport -dport 22,36,80 -j DROP
iprange扩展模块
可以指定连续范围的ip,有–src-range,–dst-range选项
iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.255 -j DROP
string
指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件
需配合–algo(参数为bm和kmp,为匹配不同算法,随便选一个)和–string使用,如
iptables -I INPUT -t filter -m string --algo bm --string "HELLO" -j REJECT
#如果报文中含有HELLO,则丢弃
–timestart 00:00:00 开始时间
–timestop 00:00:00 结束时间
–weekdays 6,7 星期,可取反
–monthdays 29,30 每个月多少号,可取反
–datestart 2020-07-27 开始日期
–datestop 2020-10-20 结束日期
connlimit
限制每个IP地址同时链接到server端的链接数量
–connlimit-above 10 限制每个ip最多有十个连接,
–connlimit-mask 27 在255.255.255.224 网段中,表示最多有多少个连接,比如27则最多有30个连接
limit
对"报文到达速率"进行限制,如:可以以秒为单位进行限制,也可以以分钟、小时、天作为单位进行限制。比如,限制每秒中最多流入3个包,或者限制每分钟最多流入30个包,都可以
“–limit-burst"指定"空闲时可放行的包的数量”
–limit 10/minute 表示每分钟10个,即6秒钟一个,同理
/second
/minute
/hour
/day
–limit-burst 3 指定闲时最多三个连接
https://www.zsythink.net/archives/1578
https://www.zsythink.net/archives/1588
http://www.zsythink.net/archives/1597
http://www.zsythink.net/archives/1625
http://www.zsythink.net/archives/1663
root@cjs-virtual-machine:~# iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 9 packets, 922 bytes) pkts bytes target prot opt in out source destination 3 180 DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT 7 packets, 802 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 85 packets, 6070 bytes) pkts bytes target prot opt in out source destination 0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT 85 packets, 6070 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 Chain DOCKER (2 references) pkts bytes target prot opt in out source destination 0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0 root@cjs-virtual-machine:~# iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 1 packets, 67 bytes) pkts bytes target prot opt in out source destination 5 284 DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT 1 packets, 67 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 10 packets, 793 bytes) pkts bytes target prot opt in out source destination 0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT 12 packets, 897 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:55555 Chain DOCKER (2 references) pkts bytes target prot opt in out source destination 0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0 2 104 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:55555 to:172.17.0.2:55555
SNAT
内部的主机可以借助SNAT隐藏自己的IP地址,同时还能够共享合法的公网IP,让局域网内的多台主机共享公网IP访问互联网。
iptables -t nat -A POSTROUTING -s 内部ip -j SNAT --to-source 外部ip
DNAT
将公网客户端发送过来的报文的目标地址与端口号做了映射,将访问web服务的报文转发到了内网中的C主机中,将访问远程桌面的报文转发到了内网中的D主机中。
iptables -t nat -I PREROUTING -d 外部ip -p tcp --dport 外部端口 -j DNAT --to-destination 内部ip:内部端口
MASQUERADE
与SNAT相似,只不过不用绑定外部ip,绑定对应的物理interface就行
iptables -t nat -A POSTROUTING -s 内部ip -j MASQUERADE -o 出口interface
REDIRECT
将本机的端口映射到另外一个端口
iptables -t nat -A PREROUTING -p tcp --dport 源端口 -j REDIRECT --to-ports 目标端口
#若是第一次使用iptables
vim /etc/network/if-pre-up.d/iptables
#!/bin/bash
iptables-restore < /etc/iptables.rules
#保存后
iptables-save > /etc/iptables.rules
#之后保存只需
iptables-save > /etc/iptables.rules
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。