今天又学习了一下iptables,作一点总结来方便之后查阅。html
Netfilter(网络过滤器)是Linux操做系统核心层内部的一个数据包处理模块,主要负责数据包的拦截和转发,而iptables是NetFilter的一种应用化,为了方便定义规则和配置。linux
iptables工做在linux的内核空间,它经过内核空间的接口与用户空间通讯,控制数据包在内核空间上的接口(就是常常说到的port)之间转发。bash
这是一条典型的iptables的配置语句,我从这里开始发散思惟:服务器
iptables -t nat -A PREROUTING -d 172.30.1.8 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.25
这条语句的功能是:在PREROUTING链的nat表上添加一条规则未来自172.30.1.8的80端口的请求转发到192.168.9.25。网络
语句指定了七个部分:链,表,源,目的,协议,端口和动做,我就从之七个方面分别记录。tcp
一、链(chain)post
iptables共有五个规则链: 学习
iptables -F PREROUTING -t nat iptables -D POSTROUTING 1 -t nat
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
六、端口ui
--sport num: 指定源端口spa
--dport num: 指定目的端口
--dport XX-XX:指定多个端口,不能指定多个非连续端口
开放服务器的3306和90端口:
iptables -A INPUT -p tcp -m multiport --dport 3306,90 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sport 3306,90 -j ACCEPT
七、动做
-j ACTION: 对数据包的处理
常见的ACTION:
iptables -I PREROUTING 1 -t nat -p tcp --dport 90 -j REDIRECT --to-ports 80
将经过端口79-80的数据包改写源 IP:
iptables -A POSTROUTING -t nat -p tcp -j MASQUERADE --to-ports 79-81
将的80端口重定向到百度:
iptables -A PREROUTING -t nat -p tcp -d 119.29.23.152 --dport 80 -j DNAT --to-destination 14.215.177.38:80 iptables -A postrouting -t nat -p tcp -d 14.215.177.38 --dport 80 -j SNAT --to-source 119.29.23.152 echo 1 > /proc/sys/net/ipv4/ip_forward #开启服务器的转发功能
还有一些其余的匹配选项:
简单的iptables规则基本介绍完了,下面是查看命令:
iptables -L -n #以数字的方式显示ip,它会将ip直接显示出来,若是不加-n,则会将ip反向解析成主机名 iptables -L -v #显示详细信息 iptables -L -vv iptables -L -vvv #越多越详细 iptables -L -x #在计数器上显示精确值,不作单位换算 iptables -L --line-numbers #显示规则的行号 iptables -L -t nat #显示nat表全部的信息
另外,咱们在终端编辑的iptables规则只是临时生效,要想在服务器重启后还能生效,须要将规则保存在配置文件/etc/sysconfig/iptables中,而且etc/sysconfig/iptables中的规则都是永久生效的。执行service iptables save命令,会使当前定义的规则保存到/etc/sysconfig/iptables中。若想将当前规则备份起来,备份iptabales规则命令是iptables-save > /etc/sysconfig/iptables.bak。若想要使用本身写的iptables配置文件或者手动加载备份的iptables配置文件,使用iptables-restore < /etc/sysconfig/iptables.bak命令。
才开始写博客,文采很差思惟凌乱格局纠结分类糟糕,若有错误的地方,或者有什么提升的地方,欢迎批评指正。另外,如今的我确定对技术了解不深,从此有什么完善的地方,我会对博客进行补充的。