netfilter架构
filter/nat精简图
systemctl status iptables
service iptables status
检查是否安装了iptables
yum install -y iptables
安装iptables
yum update iptables
升级iptables(安装的最新版本则不需要)
yum install iptables-services
安装iptables-services
/etc/sysconfig/iptables
配置文件
- 四表五链,每个表的链相互独立
- DNS占用53端口(TCP,UDP),TCP三次握手负载高,所以DNS解析用UDP
- DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议; 区域传输指的主辅DNS服务器之前传输数据。
- UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
- ping不占用端口号,使用ICMP协议,属于网络层协议,是TCP(传输层)/IP(网络层)子协议
- iptables工作在网络层,无法在应用层过滤
- iptables链有先后顺序。规则越严格越频繁使用的,应该放的越靠前。所有规则没匹配到,则应用对应链的默认规则。如果规则过多,应该关闭连接追踪。
功能优先级 raw-->mangle-->nat-->filter
- 用来增加(-A、-I)删除(-D)修改(-R)查看(-L)规则等;
- 常用参数 用来指定协议(-p)、源地址(-s)、源端口(–sport)、目的地址(-d)、目的端口(–dport)、
- 进入网卡(-i)、出去网卡(-o)等设定包信息(即什么样的包); 用来描述要处理包的信息。
- 常用处理动作 用 -j 来指定对包的处理(ACCEPT、DROP、REJECT、REDIRECT等)。
INPUT 链:过滤所有目标地址是本机的数据包(对进入本机数据包的过滤)
OUTPUT 链:过滤所有本机产生的数据包(对源地址得数据包的过滤)
FORWARD链:过滤所有路过本机的数据包(源地址和目标地址都不是本机的数据包。)
-i
报文流入接口,仅用于PERROUTING,INPUT,FORWARD-o
报文流出接口,仅用于FORWARD,OUTPUT,POSTROUTING
eg:
wireguard 服务器设置
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
service iptables save
保存配置文件,以避免重启后规则消失