iptables和firewalld是火墙管理的两个工具
默认的三张表:
filter(经过本机内核的数据)
nat(不经过本机内核的数据)
mangle(前两个表不够用的时候,用这个)
一、iptables 基本指令
参数 | 含义 |
-t | 指定表名称(nat,filter,mangle),不加-t,默认是filter |
-n | 不做解析(速度稍快一点) |
-L | 查看 |
-p | 协议 |
--dport,--sport | 指定目的端口,来源端口 |
-s | 来源 |
-j | 动作(ACCEPT,DROP,REJECT,DNAT,NAT) |
-F | 临时清除策略,只是清除内存上的,重启服务后规则又会出现 |
实质都是保存到文件/etc/sysconfig/iptables
永久保存方式1:
iptables-save > /etc/sysconfig/iptables
永久保存方式2:
service iptables save
[root@node1 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
新建链表操作
参数 | 含义 |
-N | 新建链表 |
-E | 给新建链表改名字 |
-X | 删除新建链表 |
规则操作:
参数 | 含义 |
-A | 新建规则 |
-I | 插入规则,后可跟数字,插入到指定位置 |
-R | 更改规则 |
-P | 更改默认规则,-j后面只能是ACCEPT或者DROP |
-D | 删除规则 |
iptables 表里的规则是从上往下读的,如如果匹配到规则就不再继续向下匹配了。
将都接受规则(第二条)插入到拒绝80访问之前,就能正常访问了
由于是按着顺序访问的,因此在企业中若有几万条规则,逐一读取会造成网速的延迟,因此,读取规则的时候先读状态。对于状态是establishd,related的直接过。
数据包的三种状态:
- RELATED 建立过连接
- ESTABLISHED 正在建立连接
- NEW 尚未建立过连接
二、目的地地址转换(DNAT)
环境:
ip | 主机名 |
192.160.1.1 | s1 |
192.160.1.2 & 172.25.26.2 | s2 |
172.25.26.3 | s3 |
tu
默认s3不能ssh s1,因为不是一个网段
做DNAT之后:
s3 连接s2(双网卡中与s3同网段),跳到s1
在s1端看到的就是真实连接它的机器ip
三、源地址转换(SNAT)
默认s1(192.160.1.1连接s3[172.25.26.3]连不上),做完SNAT之后
可以连接上了
在s3上看下是谁连的它:
注:一定要指定-o -i