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等)。
  1. INPUT 链:过滤所有目标地址是本机的数据包(对进入本机数据包的过滤)

  2. OUTPUT 链:过滤所有本机产生的数据包(对源地址得数据包的过滤)

  3. 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 保存配置文件,以避免重启后规则消失