系统相关
首页 > 系统相关> > 75.iptables 之centos6系列(day75)

75.iptables 之centos6系列(day75)

作者:互联网

 

 iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp -j MARK --set-mark 2
上面这句话中 -m可以匹配一遍tcp协议,那么为什么还要-p在匹配一遍tcp协议呢? 两者不矛盾吗?

 iptables可以使用扩展模块来进行数据包的匹配,语法就是 -m module_name, 所以
-m tcp 的意思是使用 tcp 扩展模块的功能 (tcp扩展模块提供了 --dport, --tcp-flags, --sync等功能)
其实只用 -p tcp 了话, iptables也会默认的使用 -m tcp 来调用 tcp模块提供的功能。但是 -p tcp 和 -m tcp是两个不同层面的东西,一个是说当前规则作用于 tcp 协议包,而后一是说明要使用iptables的tcp模块的功能 (--dport 等)

 

 

 

 

 

 

Centos6 系列Iptables:

一:

这里将本地接口IP 61.144.a.b 的3389端口 转发到 116.6.c.d的3389     

(主要访问到61.144.a.b的3389端口,就会跳转到116.6.c.d的3389)

解析:

1、   首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 

2、    service iptables stop  关闭防火墙

3、    重新配置规则

4、     iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 3389 -j DNAT --to-destination 116.6.c.d:3389

     iptables -t nat -A POSTROUTING --dst 116.6.c.d -p tcp --dport 3389 -j SNAT --to-source 61.144.a.b

         5service iptables save 

      将当前规则保存到 /etc/sysconfig/iptables
       若你对这个文件很熟悉直接修改这里的内容也等于命令行方式输入规则。

       6,启动iptables 服务, service iptables start

二:

本地连接
本地连接指的是在本机上,用 127.0.0.1 或者本机 IP 来访问本机的端口。本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。所以需要在 OUTPUT 链中进行 DNAT。除了对 127.0.0.1 之外,对本机 IP (即 192.168.4.177) 的访问也属于本地连接。

解析:

 iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080

或者

 iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080 

三:

将与 80 端口的 TCP 连接转接到本地的 8080 端口上。使用 DNAT (Destination Network Address Translation) 技术可以满足这一要求。因为 iptables 在处理本地连接和远程连接的方法不同,所以需要分开处理。下面假设本机的 IP 192.168.4.177

远程连接
远程连接指的是由另外一台机器连接到这台机器上。这种连接的数据包在 iptables 会首先经过 PREROUTING 链,所以只需在 PREROUTING 链中作 DNAT。

解析:

 iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.4.177 --dport 80 -j DNAT --to 192.168.4.177:8080 

 

 

 

1、防火墙:内核中具有包过滤体系

内核态:netfilter

用户态:iptables  管理工具

工作在网络层:可以对ip地址、端口、协议等信息进行处理

2、规则链:规则的集合

五种链:(必须大写)

INPUT:入站

OUTPUT:出站

FORWARD:转发

POSTROUTING:路由后转换

PREROUTING:路由前转换

1)INPUT链:当收到访问防火墙本机地址的数据包(入站),应用此链中的规则。

2)OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。

3)FORWARD链:当收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。

4)PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。

5)POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。

3、规则表:规则链的集合

有4个表:

Raw:状态跟踪

Mangle:设置标记

Nat:地址转换

Filter:包过滤

1)filter表:用来对数据包进行过滤,表内包含三个链,即:INPUT,FORWARD,OUTPUT

2)Nat表:nat表主要用来修改数据包的ip地址、端口号等信息。包含三个链,即PREROUTING,POSTROUTING,OUTPUT

3)Mangle表:用来修改数据包的TOS、TTL,或者为数据包设置MARL标记,实现流量整形,策略路由等高级应用,包含五个链,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

4)Raw表:用来决定是否对数据包进行状态跟踪,包含两个链:即OUTPUT,PREROUTING

4、规则的匹配顺序:

1)规则表的顺序

当数据包抵达防火墙时,将依次应用raw表,mangle表,nat表和filter表中对应链内的规则,应用顺序为raw-mangle-nat-filter

按顺序依次检查,匹配即停止(LOG策略除外),无匹配项,执行默认策略。

2)规则链之间的顺序

入站数据流向:来自外界的数据包到达防火墙后,首先被PRETOUTING链处理,然后进行路由选择,如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT链进行处理,通过以后再讲给系统的上层应用程序进行响应。

转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后再进行路由选择,如果数据包的目的地址是其他外部的地址,则内核将其传递给FORWARD链进行处理,最后交给POSTROUTING链进行处理。

出站数据流向:防火墙本机向外部地址发送的数据包,首先被OUTOUT处理,然后进行路由选择,再交给POSTROUTING链进行处理。

3)规则链内部各条防火墙规则之间的顺序

当数据包经过每条规则链时,依次按第一条规则,第二条规则......的顺序进行匹配和处理,链内的过滤遵循“匹配即停止”的原则,一旦找到一条相匹配的规则,则不再检查本链内后续的其它规则,如果比对完整个链,也找不到与数据包相匹配的规则,就按照规则链的默认策略进行处理。

5、iptables语法:

Iptables  -t  表名  命令选项  链名  条件选项  -j  控制类型

1)不指定表名,为filter表

2)命令选项、链名、控制类型必须大写,其他必须小写

3)条件选项可以设置多项

6、控制类型:

1)ACCEPT:允许

2)REJECT:拒绝,返回信息

3)DROP:丢弃,无信息

4)LOG:记录日志,传给下一条规则

5)SNAT:源地址转换

6)DNAT:目标地址转换

7)MASQUERADE:ip伪装,源地址转换

8)REDIRECT:重定向

7、命令选项:

-A:追加到末尾

-I:插入(默认插入到第一条)

-L:查看

-D:删除(必须加序号)

-F:清空,但默认策略不清空

-P:默认策略,只有ACCEPT或DROP两种

-R:替换

-X:删除自定义链

-N:新建自定义链

-n:以数字方式显示

--line-number:添加序号

8、条件选项:

1)通用匹配:不依赖于任何条件可直接使用

-s:源地址             -d:目标地址

-p:协议                 -i:入口

-o:出口               !:取反

2)隐含匹配:依赖指定的协议

--sport:源端口          --dport:目标端口

--tcp—flags:TCP标记

--icmp-type:icmp类型,有两种:

Echo-request(可用8代替)      请求

Echo-reply(可用0代替)        回应

开启转发功能:

永久有效:vim  /etc/sysctl.conf

         Net.ipv4.ip_forward=1

生效:sysctl  -p

临时转发,立即生效

Sysctl  -w net.ipv4.ip_forward=1

Echo “1”  > /proc/sys/net/ipv4/ip_forward

3)显示配置:依赖于指定的功能模块,必须明确指定模块名称才可以使用

多端口匹配:-m  multiport --sports   源端口列表

                      -m  multiport  --dports  目的端口列表

IP范围匹配:-m  iprange --src-range  ip范围

MAC地址匹配:-m  mac  --mac-source MAC地址

状态匹配:-m  state --state   连接状态

 

https://www.cnblogs.com/L2366/p/9285917.html

 

标签:iptables,tcp,centos6,75,PREROUTING,规则,OUTPUT,数据包
来源: https://www.cnblogs.com/liuqiqi123/p/9287461.html