网络工程师必须掌握技能之iptables

本篇文档主要给大家介绍一下iptables的基础概念,学习iptables之前我们必须要先熟悉基础网络知识

网络基本概念

NAT(Network Address Translation)

参考文章
网络交换协议,简单的来讲就是替换IP报文头部的地址信息。比如家里常用的路由器就提供NAT功能

NAT

SNAT 源地址转换

内部地址需要访问公网服务使用源地址转换。上图中C要访问A就需要通过B,此时B转A时会将源IP改成自己的外网IP,后面A才能正确回包

DNAT 目标地址转换

内部地址提供到外部服务,也就是外部地址访问内部地址。上图中A要访问C,也是先访问B也就是说A的请求报文中目标IP是B的外网IP,B收到报文后会把目的地址改成C的IP地址并转发给C。

Linux内核对IP报文(从网卡开始)处理流程?

iptables

了解iptables时我们需要了解 netfilter ,简单的来讲netfilter就是一个包处理框架,在处理包传递过程中,会按照一定的规则处理,也就是程序里常用的chain。而iptables就是可以写这些chain rule的工具。
下图显示4表5链关系及相关链路:图来源于:https://www.linuxidc.com/

iptables 4表5链
图片来源于 https://www.linuxidc.com/Linux/2018-08/153567.htm

以下列出资料文章

netfilter 概念
iptables 概念

iptables基础知识详解
iptables相关概念
iptables设置参考文章
iptables设置说明

iptables命令语法

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP> -- sport 源端口 <-d 目标IP> -- dport 目标端口 -j 动作

  • 表名(不加默认filter): raw -> mangle -> nat -> filter
  • -A 追加规则 , -I 某行添加规则(不指定首行),-D [number]删除某行,-R 替换(一般不用)
  • 规则链名: PREROUTING -> INPUT ->应用进程-> OUTPUT -> POSTROUTING OR PREROUTING -> FORWARD -> POSTROUTING
  • -i: 进网卡,-o 出网卡
  • -p: 协议名,常用 TCP,UDP,ICMP
  • -s: 原IP(也可以是域名), -d: 目标端口(也可以是域名)
  • -- sport portnum: 源端口,-- dport portnum: 目标端口
  • -j: 执行动作
ACCEPPT:接受数据包。
DROP:直接丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换   -j SATA --to-source 192.168.0.1
DNAT:目标地址转换 -j DATA --to-destination  192.168.0.
MASQUERADE:IP伪装(NAT)。
LOG:日志记录。在/var/log/messages文件中记录日志信息。除了记录对数据包不做任何动作。

具体操作

如果需要forward功能需要开启
echo 1 > /proc/sys/net/ipv4/ip_forward

查看配置信息

iptables -t filter -L -n --line-number

对filter表相关操作

-t 不写默认是filter表
1. 为filter表添加INPUT链路,拒绝源IP访问
iptables -t filter -A INPUT -s 192.168.56.10 -d  -j DROP
iptables -t filter -I INPUT -s 192.168.56.10 -d  -j DROP
2. 删除filter表INPUT链路 后面1是第1行
iptables -D INPUT 1

你可能感兴趣的:(网络工程师必须掌握技能之iptables)