天天看点

linux-iptables

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

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

[root@desktop ~]# yum install iptables-services.x86_64  -y   安装服务

[root@desktop ~]# systemctl stop firewalld               关闭火墙

[root@desktop ~]# systemctl disable firewalld           开机不启动

[root@desktop ~]# systemctl mask firewalld               锁住火墙

[root@desktop ~]# systemctl start iptables.service   开启服务

[root@desktop ~]# systemctl enable iptables.service  开机开启

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

[root@desktop ~]# iptables -t filter -L  列出

[root@desktop ~]# iptables -t filter -nL   不做解析

查看/etc/sysconfig/iptables 文件

iptables -F 刷新策略

service iptables save  保存 

再次查看,策略被刷掉

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

[root@desktop ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 添加80端口

[root@desktop ~]# 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)

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination         

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

[root@desktop ~]# iptables -D INPUT 4  删除第4条策略

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

[root@desktop ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]  保存

[root@desktop ~]# cat /etc/sysconfig/iptables

[root@desktop ~]# 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的数据包

[root@desktop ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT  匹配来自80端口的数据包

[root@desktop ~]# iptables -A INPUT -j REJECT     拒绝所有包

[root@desktop ~]# iptables -nL | cat -b  加入行号

[root@desktop ~]# iptables -nL | grep 80 -n  查看80端口

[root@desktop ~]# iptables -nL | grep -E "INPUT|target"

[root@desktop ~]# iptables -nL | grep -E "INPUT|target" -n

[root@desktop ~]# iptables -nL | grep -E "INPUT|target" -v | cat -b

*)新建链

[root@desktop ~]# iptables -N westos  新建链

*)更改链名称

[root@desktop ~]# iptables -E westos lh;

*)删除链

[root@desktop ~]# iptables -X lh 删除链

*)更改策略

[root@desktop ~]# iptables -P INPUT DROP  更改策略

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

环境:

[root@desktop ~]# iptables -F  刷新策略

命令格式如下:

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

[root@desktop ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

[root@desktop ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT

[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT

[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

[root@desktop ~]# iptables -A INPUT -j REJECT 

*)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)双网卡主机

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

3)做转换

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

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

[root@desktop ~]# sysctl -a | grep ip_forward

net.ipv4.ip_forward = 0

[root@desktop ~]# vim /etc/sysctl.conf  修改文件

[root@desktop ~]# sysctl -p  执行

net.ipv4.ip_forward = 1

测试:

1)出去的

2)进来的

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

继续阅读