运维进阶——iptables详解

iptables

先将双网卡的desktop的firewalld关闭,并锁定

[root@dektop ~]# systemctl stop firewalld
[root@dektop ~]# systemctl mask firewalld
ln -s '/dev/null' '/etc/systemd/system/firewalld.service'
[root@dektop ~]# 

iptables基本操作命令一览

iptable
        -t      ##指定表名称 
        -n      ##不作解析
        -L      ##列出指定表中的策略
        -A      ##增加策略
        -p      ##网络协议
        --dport ##端口
        -s      ##数据来源
        -j      ##动作
        ACCEPT  ##允许
        REJECT  ##拒绝
        DROP    ##丢弃
        -N      ##增加链
        -E      ##修改链名称
        -X      ##删除链
        -D      ##删除指定策略
        -I      ##插入
        -R      ##修改策略
        -P      ##修改默认策略
iptables  -t filter -nL         #查看filter表中的策略   -t 后面不跟表名的话,默认为filter表

iptable  -F                     #刷掉filter表中的所有策略,当没有用-t指定表名称>时默认时filter
service iptables save           #保存当前策略   保存在了/etc/sysconfig/iptables里
iptables -A INPUT -i lo -j ACCEPT       #允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   ##允许访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT   ##允许250主机访问本机所有端口
iptables -A INPUT -j REJECT                     ##拒绝所有主机的数据来源
iptables -N redhat      ##增加链redhat
iptables -E redhat westos       ##改变链名称
iptables -X westos      ##删除westos链
iptable -D INPUT 2      ##删除INPUT链中的第二条策略
iptables -I INPUT  -p tcp --dport 80  -j REJECT ##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
iptable -P INPUT DROP           ##把INPUT表中的默认策略改为drop

命令演示

iptables -t filter -nL    查看filter表,-t不指定的话,默认为filter表

在这里插入图片描述

iptables -A INPUT -i lo -j ACCEPT       #-A 表示添加  -j 表示动作,允许lo
Iptables -t filter -L     -n是不做解析,不带-n是做解析

在这里插入图片描述

iptables -A INPUT -p tcp --dport 22 -j ACCEPT   ##允许访问22端口   -p表示网络协议

在这里插入图片描述

iptables -A INPUT -s 172.25.254.13 -j ACCEPT   ##允许250主机访问本机所有端口

在这里插入图片描述

iptables -A INPUT -j REJECT                     ##拒绝所有主机的数据来源

把这条加在允许13主机的所有端口这条策略之后,那么会如何让执行呢,
它会从第一条开始,只要读到匹配项就停止了
在这里插入图片描述
在这里插入图片描述

还可以连接,说明它读了第一条策略匹配后停止,第二条侧路并美生效

iptables -i INPUT -j REJECT    拒绝所有主机的数据来源,插入到第一条

在这里插入图片描述

iptable -D INPUT 3     ##删除INPUT链中的第3条策略

在这里插入图片描述

在主机上再测试
在这里插入图片描述

iptables -N redhat      ##增加链redhat

在这里插入图片描述
同样如果不-t指定的话默认是filter表
在这里插入图片描述

iptables -E redhat westos       ##改变链名称

在这里插入图片描述

iptables -X westos      ##删除westos链

在这里插入图片描述

iptables -R INPUT 2 -j REJECT ##修改第2条策略

在这里插入图片描述

iptable -P INPUT DROP           ##把INPUT表中的默认策略改为drop

在这里插入图片描述

iptable  -F                     #刷掉filter表中的所有策略,当没有用-t指定表名称>时默认时filter

在这里插入图片描述

端口转发

[root@dektop ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.213:22
[root@dektop ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 to:1.1.1.213:22

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

在这里插入图片描述

操作和firewalld的作用是一样的,只是通过不同的方式

测试
在真机

[kiosk@foundation13 ~]$ ssh [email protected]
[email protected]'s password: 
Last login: Sat Jun  1 01:38:06 2019 from 1.1.1.113

查看ip,是1网段的server虚拟机

地址伪装

[root@dektop ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.113
[root@dektop ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 to:1.1.1.213:22

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  0.0.0.0/0            0.0.0.0/0            to:172.25.254.113

测试
在server虚拟机
ping 172.25.254.13

猜你喜欢

转载自blog.csdn.net/zhaoliang_Guo/article/details/91055360