iptables转发规则

来源:互联网 发布:java 微信支付demo 编辑:程序博客网 时间:2024/06/07 06:14

http://www.cnblogs.com/davidwang456/p/3540837.html

http://lesca.me/archives/iptables-examples.html

http://blog.chinaunix.net/uid-29442-id-2134000.html

对linux而言tcp/ip协议栈是在内核当中,意味着报文的处理是在内核中处理的也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成tcp/ip报文所流进的位置,用规则去检查,才真正能工作起来。

iptables用来衡量tcp/ip报文的属性:源ip、目标ip、源端口、目标端口;


1. 表:
   mangle: 改变包的(TOS/TTL/MARK)属性。建议不加任何过滤。
   nat: 用于转换包的源地址和目标地址。流的第一个包会进行匹配,后面的包会做按第一个包一样处理。包括DNAT/SNAT/MASQUERADE。
   filter: 用于过滤,对包的抉择ACCEPT或者DROP。

2. 链:
   PREROUTING: 所有进入的包最先进入的链
   POSTROUTING: 所有发送包最后通过的链
   INPUT: 进入本地的链
   OUTPUT: 本地发送出去的链
   FORWARD: 转发的链,不进入本地

   通常有三种状态:
   a) 进入本地的包:NETWORK-->(mangle)PREROUTING-->(nat)PREROUTING-->-->(mangle)INPUT-->(filter)INPUT-->
   b) 从本地发出的包:-->(mangle)OUTPUT-->(nat)OUTPUT-->(filter)OUTPUT-->(mangle)POSTROUTING-->(nat)POSTROUTING-->NETWORK
   c) 路由的包:NETWORK-->(mangle)PREROUTING-->(nat)PREROUTING-->-->(mangle)FORWARD-->(filter)FORWARD-->(mangle)POSTROUTING-->(nat)POSTROUTING-->NETWORK




iptables基本概念

对linux来说,是能够实现主机防火墙的功能组件,如果部署在网络边缘,那么既可以扮演网络防火墙的角色,而且是纯软件的

网络数据走向:

请求报文à网关à路由à应用程序(等待用户请求)à内核处理à路由à发送报文

iptables规则功能

表:

filter主要和主机自身有关,主要负责防火墙功能 过滤本机流入流出的数据包是默认使用的表;

input   :负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包;

forward  :负责转发流经主机但不进入本机的数据包,和NAT关系很大;

output   :负责处理源地址的数据包,就是对本机发出的数据包;

NAT表:

负责网络地址转换,即来源于目的IP地址和端口的转换,一般用于共享上网或特殊端口的转换服务

snat    :地址转换

dnat    :标地址转换

pnat    :标端口转换

mangle 表:

将报文拆开来并修改报文标志位,最后封装起来

5个检查点(内置链)

·PREROUTING

·INPUT

·FORWORD

·OUTPUT

·POSTROUTING    

多条链整合起来叫做表,比如,在input这个链,既有magle的规则也可能有fileter的规则。因此在编写规则的时候应该先指定表,再指定链

netfilter主要工作在tcp/ip协议栈上的,主要集中在tcp报文首部和udp报文首部


具体实践:


1、先打开IP转发功能:

echo "1">/proc/sys/net/ipv4/ip_forward

通过以下命令可以查到返回值为1,表示打开成功

有些机器如果是DHCP PPPOE的话还要打开

echo "1" >/proc/sys/net/ipv4/ip_dynaddr

 

cat /proc/sys/net/ipv4/ip_forward


2、之后执行iptables命令,执行iptables命令需要在root权限下,所以在此之前先将模式切换至root

iptables -F

iptables -F -t nat

iptables -X

iptables -P FORWARD ACCEPT


3、路由转发规则设置

iptables -t nat -A PREROUTING -d 42.156.141.75 -p 6 --dport 80 -j DNAT--to 10.1.8.171:80

iptables -A FORWARD -p 6 -d 10.1.8.171 --dport 80 -j ACCEPT


iptables -nL 查看普通表规则

(iptables-t nat -L 查看NAT表规则)



iptables -nL 查看普通表规则

(iptables-t nat -L 查看NAT表规则)

0 0