linux-iptables


################## iptables ###################


*)安装服务并启用##########################


[[email protected] ~]# yum install iptables-services.x86_64  -y   安装服务

[[email protected] ~]# systemctl stop firewalld               关闭火墙
[[email protected] ~]# systemctl disable firewalld           开机不启动
[[email protected] ~]# systemctl mask firewalld               锁住火墙
[[email protected] ~]# systemctl start iptables.service   开启服务
[[email protected] ~]# systemctl enable iptables.service  开机开启


*)iptables 相关命令#######################################


[[email protected] ~]# iptables -t filter -L  列出

linux-iptables


[[email protected] ~]# iptables -t filter -nL   不做解析

linux-iptables


查看/etc/sysconfig/iptables 文件


linux-iptables

iptables -F 刷新策略

service iptables save  保存 

linux-iptables


再次查看,策略被刷掉




[[email protected] ~]# iptables -A INPUT -i lo -j ACCEPT  添加策略  (回环接口)

[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 添加80端口

[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         


[[email protected] ~]# iptables -A INPUT -j REJECT  此设置后   拒绝所有连接


[[email protected] ~]# iptables -D INPUT 4  删除第4条策略

linux-iptables

[[email protected] ~]# iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT 在指定位置加入策略


linux-iptables


[[email protected] ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]  保存

linux-iptables

[[email protected] ~]# cat /etc/sysconfig/iptables




[[email protected] ~]# iptables -A INPUT -i lo -j ACCEPT
[@top ~]# iptables -A INPUT -s 172.25.12.250 -p tcp --dport 22 -j ACCEPT 匹配来自172.25.12.250的数据包
[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT  匹配来自80端口的数据包
[[email protected] ~]# iptables -A INPUT -j REJECT     拒绝所有包


[[email protected] ~]# iptables -nL | cat -b  加入行号



[[email protected] ~]# iptables -nL | grep 80 -n  查看80端口

linux-iptables




[[email protected] ~]# iptables -nL | grep -E "INPUT|target"

[[email protected] ~]# iptables -nL | grep -E "INPUT|target" -n


linux-iptables


[[email protected] ~]# iptables -nL | grep -E "INPUT|target" -v | cat -b


linux-iptables

*)新建链

[[email protected] ~]# iptables -N westos  新建链


linux-iptables


*)更改链名称

[[email protected] ~]# iptables -E westos lh;


linux-iptables


*)删除链

[[email protected] ~]# iptables -X lh 删除链


*)更改策略

[[email protected] ~]# iptables -P INPUT DROP  更改策略


linux-iptables


*)基于状态的匹配扩展 (连接跟踪)################


环境:

[[email protected] ~]# iptables -F  刷新策略

[[email protected] ~]# service iptables save


linux-iptables


命令格式如下:

iptables -m state --state

»NEW: 该包想要开始一个新的连接(重新连接或连接重定 向)
»RELATED:该 包是属于某个已建立的连接所建立的新连接。举例:FTP的
数据传输连接和控制连 接之间就是RELATED关系。
»ESTABLISHED:该包属于某个已建立的连接。
»INVALID:该 包不匹配于任何连接,通常这些包被DROP。

例如:
(1)在INPUT链添加一条规则,匹配已建立的连接或由已建立的连接所建
立的新连接。即匹配任何的TCP回应包。
   #iptables -A INPUT -m state --state RELATED,ESTABLISHED
(2)在INPUT链链添加一条规则,匹配任何从非eth0接口来的连接请求
包。
#iptables -A INPUT -m state --state NEW -i !eth0


[[email protected] ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

在INPUT链添加一条规则,匹配已建立的连接或由已建立的连接所建立的新连接。

[[email protected] ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[[email protected] ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
[[email protected] ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[[email protected] ~]# iptables -A INPUT -j REJECT 


linux-iptables


*)NAT中的SNAT和DNAT#######################


NAT 是将局域网的内部地址转换成公网上合法的ip地址,使内部地址能像有公网地址的主机一样上网。


SNAT是指在数据从网卡发送出去的时候,把数据包中的源地址部分替换为指定的ip,这样,

接受方就认为数据包的来源是被替换的那个ip的主机。


DNAT是指数据包从网卡发送出去的时候,修改数据包中的目的ip,表现为如果你想访问A,可是

因为网关做了DNAT,把所有访问A的数据包的目的ip全部修改为B,那么你实际访问的是B。


因为路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的

而SNAT是在数据包发送出去的时候才进行的,因此,是在POSTROUTING链上进行的。


SNAT就是改变转发数据包的源地址 --to-source:

DNAT就是改变转发数据包的目的地址 --to-dest:


实验环境:

1)双网卡主机


linux-iptables


2)另外一台主机,注意ip和网管配置


linux-iptables

3)做转换

[[email protected] ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.12.10   (出去先变成此ip)

[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.25.12.10 -j DNAT --to-dest 172.25.254.1(进来)



[[email protected] ~]# sysctl -a | grep ip_forward

net.ipv4.ip_forward = 0
[[email protected] ~]# vim /etc/sysctl.conf  修改文件
[[email protected] ~]# sysctl -p  执行
net.ipv4.ip_forward = 1
[[email protected] ~]# iptables -F  刷新策略


linux-iptables


linux-iptables

测试:

1)出去的


linux-iptables


2)进来的

linux-iptables


linux-iptables



 本文转自 huanzi2017 51CTO博客,原文链接:http://blog.51cto.com/13362895/2047512