iptables NAT规则【转】

nat表需要的三个链:

1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
  2.POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
  3.OUTPUT:定义对本地产生的数据包的目的NAT规则。

需要用到的几个动作选项:(真实环境中用大写)

 redirect  将数据包重定向到另一台主机的某个端口,通常用实现透明代理和对外开放内网某些服务。
snat 源地址转换,改变数据包的源地址
dnat 目的地址转换,改变数据包的目的地址
masquerade IP伪装,只适用于ADSL等动态拨号上网的IP伪装,如果主机IP是静态分配的,就用snat

PRERROUTING:DNAT 、REDIRECT   (路由之前)只支持-i,不支持-o。在作出路由之前,对目的地址进行修改

POSTROUTING:SNAT、MASQUERADE (路由之后)只支持-o,不支持-i。在作出路由之后,对源地址进行修改

OUTPUT:DNAT 、REDIRECT   (本机)DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.

一、打开内核的路由功能。

要实现nat,要将文件/proc/sys/net/ipv4/ip_forward内的值改为1,(默认是0)。

1、开启Linux内核转发

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

SSH执行以上命令,1为开启,0为关闭。

2、保持开机自动启动

vi  /etc/sysctl.conf

修改以下字符

# Controls IP packet forwarding
net.ipv4.ip_forward = 0 #0为关闭,1为开启

修改后保存即可,下次开机后可自动加载。

二、nat不同动作的配置

1)MASQUERADE:是动态分配ip时用的IP伪装:在nat表的POSTROUTING链加入一条规则:所有从ppp0口送出的包会被伪装(MASQUERADE)

[[email protected]]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

要想系统启动时自动实现nat,在/etc/rc.d/rc.local文件的末尾添加

[[email protected]]# echo "1">/proc/sys/net/ipv4/ip_forward

[[email protected]]# /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

2) SNAT:一般正常共享上网都用的这个。

所有从eth0(外网卡)出来的数据包的源地址改成61.99.28.1(这里指定了一个网段,一般可以不指定)

[[email protected]]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 61.99.28.1

3)DNAT:目的nat 做智能DNS时会用到

智能DNS:就是客户端在dns项里无论输入任何ip,都会给他定向到服务器指定的一个dnsip上去。

在路由之前所有从eth0(内网卡)进入的目的端口为53的数据包,都发送到1.2.3.4这台服务器解析。

[[email protected]]# iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 1.2.3.4:53

[[email protected]]# iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 1.2.3.4:53

4)REDIRECT:重定向,这个在squid透明代理时肯定要用到它

所有从eth1进入的请求80和82端口的数据,被转发到80端口,由squid处理。

[[email protected]]# iptables -t nat -A PREROUTING - -i eth1 -p tcp -m multiport --dports 80,82 -j REDIRECT --to-ports 80

转自

iptables NAT规则 - highstar - 博客园
http://www.cnblogs.com/highstar/p/3256813.html

时间: 2024-10-07 05:22:33

iptables NAT规则【转】的相关文章

iptables的nat规则骚操作

水一枪 我对防火墙这块的认知是比较低的, 之前一直没怎么去用 最多的要么就是 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,这还是以前刚出来接触linux的时候redhat6跑的,后来改革了,好吧,centos7 firewall-cmd --zone=public --add-port=6379/tcp --permanent && firewal

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

负载均衡之iptables/nat模式

Iptables和NAT 结合,也能够实现简单的负载均衡. 简介 iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具.但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的).当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做ip

Linux iptables:规则组成

<Linux iptables:规则原理和基础>介绍了iptables的四表五链,简单说就是不同的网络层数据包会经过哪几个挂载点,在每个挂载点可以在哪张表进行规则定义. 本篇沿着这个思路,更具体的介绍一条iptables规则的组成. Linux iptables:规则组成 这是iptables一条规则的基本组成,也是iptables定义规则的命令格式: 第一列是iptables命令: 第二列指定规则所在的表,常用的是nat和filter表: 第三列是命令,常用命令如下: -A 在指定链的末尾添

Linux iptables:规则原理和基础

什么是iptables? iptables是Linux下功能强大的应用层防火墙工具,但了解其规则原理和基础后,配置起来也非常简单. 什么是Netfilter? 说到iptables必然提到Netfilter,iptables是应用层的,其实质是一个定义规则的配置工具,而核心的数据包拦截和转发是Netfiler. Netfilter是Linux操作系统核心层内部的一个数据包处理模块. iptables和Netfilter关系图: 在这张图可以看出,Netfilter作用于网络层,数据包通过网络层会

iptables防火墙规则整理

iptables防火墙规则整理 iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能.在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全.以下对iptables的规则使用做了总结性梳理: iptables由两部分组成: 1.framework:netfilter hooks function钩子函数,实现网络过滤器的基

Iptables Nat转发

Iptables Nat iptables子命令: 规则: -A:添加 -I:插入 -D:删除 -R:修改 链: -N:新建一条自定义的链 -X:删除一条自定义的空链 -F:清空链中的规则 -Z:清空链中的计数器 -E:重命名自定连的名称 -P:修改链的默认规则 显示: -L: -n,-v,--line-numbers -S: 规则定义:iptables -t table -A|-I|-R chain 匹配条件 -j target 匹配条件: 通用匹配:-s,-d,-i,-o,-p 扩展匹配:

iptables添加规则的操作说明

管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击. 很多用户把 Linux 中的 IPTables 当成一个防火墙,从严格意见上来说 IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具.它只是帮助管理员配置网络流量的传入.传出规则列表,具体的实现其实是在 Linux 内核当中. IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加各种

iptables删除规则

查看nat规则: iptables -t nat -nL --line-number 添加规则是-A和-I,-A是添加到末尾,-I是添加到指定位置,默认添加到最前面.删除使用-D,也就是原来“iptables -A 某某某”变成“iptables -D 某某某”. 但是有些规则很长,容易写错,所以删除可以使用line-number,我删除第三行NAT,所以是: iptables -t nat -D PREROUTING 3 这里记录一下,因为同一个端口在nat表里被映射了两次,由于网关配置非常多