关于 iptables 入站 出站以及NAT实例

合集下载

iptables和nat的配置与管理

iptables和nat的配置与管理

iptables简介
netfilter是Linux核心中的一个通用架构,它提供了一 系列的“表”(tables),每个表由若干“链”( chains)组成,而每条链可以由一条或数条“规则”( rules)组成。实际上,netfilter是表的容器,表是链 的容器,而链又是规则的容器。 3个表: filter(默认表)、nat表、manger表 5条链: INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

பைடு நூலகம்
Iptables的基本语法实例
在filter表中INPUT链的第2条规则前插入一条新规则,规 则为不允许访问TCP协议的53端口的数据包通过 iptables –I INPUT 2 –p tcp –dport 53 –j DROP 在filter表中INPUT链的第一条规则前插入一条新规则,规 则为允许源IP地址属于172.16.0.0/16网段的数据包通过 iptables –I INPUT 1 –s 172.16.0.0/16 –j ACCEPT 删除filter表中INPUT链的第2条规则 iptables –D INPUT 2 清除filter表中INPUT链的所有规则。 iptables –F INPUT
iptables和nat的配置与管理
金京犬
Tip:学习目标
知识目标 了解防火墙的分类及工作原理、了解NAT 掌握iptables防火墙的配置 掌握利用iptables实现NAT 能力目标 能熟练完成利用iptables架设企业NAT服务器 情感目标

项目背景
假如某公司需要Internet接入,由ISP分配IP地址 202.112.113.112。采用iptables作为NAT服务器接入网络, 内部采用192.168.1.0/24地址,外部采用202.112.113.112 地址。为确保安全需要配置防火墙功能,要求内部仅能够访 问Web、DNS及Mail三台服务器;内部Web服务器 192.168.1.100通过端口映象方式对外提供服务。网络拓扑 结构如下图所示。

iptables防火墙FORWARD 和 NAT 规则的应用

iptables防火墙FORWARD 和 NAT 规则的应用
服务器服务器系统; 5. 利用iptables命令查看结果。
允许整个 LAN 的转发(防火墙/ 网关在 eth0 上有一个内部 IP 地
址192.168.0.105)
查看是否设置成功
操作流程:
1. 利用命令查看制定链中的所有规则和网卡信息; 2. 利用命令设置防火墙允许整个 LAN 的转发; 3. 把来自 LAN 节点的请求都伪装成防火墙的外部设备的 IP 地址; 4. 把进入的 HTTP 请求转发到 192.168.0.127上的专用 Apache HTTP
服务器服务器系统; 5. 利用iptables命令查看结果。
查看配置结果
实验结论:
通过对iptables防火墙基本配置的学习,可以有效利用配置端口的方法来 控制系统服务的应用,以确保服务器的可靠性和安全性。
nat规则的应用多数机构从它们的isp处得到数量有限的公网ip地址鉴于这种限额管理员必须积极寻求分享互联网服务的创建性方法而又不必把稀有的ip地址分配给lan上的每一台机器
iptables防火墙FORWARD 和 NAT 规则 的应用
背景描述:
多数机构从它们的ISP处得到数量有限的公网IP地址,鉴于这种限额,管理 员必须积极寻求分享互联网服务的创建性方法,而又不必把稀有的IP地址 分配给LAN上的每一台机器。针对此情况,iptables防火墙提供了选路发 送和转发政策,可以实现网络资源的有效利用。
服务器服务器系统; 5. 利用iptables命令查看结果。
把来自 LAN 节点的请求 都伪装成防火墙的外部设
备的 IP 地址
操作流程:
1. 利用命令查看制定链中的所有规则和网卡信息; 2. 利用命令设置防火墙允许整个 LAN 的转发; 3. 把来自 LAN 节点的请求都伪装成防火墙的外部设备的 IP 地址; 4. 把进入的 HTTP 请求转发到 192.168.0.127上的专用 Apache HTTP

关于iptables入站出站以及NAT实例

关于iptables入站出站以及NAT实例

关于iptables入站出站以及NAT实例本文是自己工作上的iptables笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!iptbales默认ACCEPT策略,也称通策略,这种情况下可以做拦截策略,还有种叫堵策略,然后开放通的规则。

(我偏向堵策略,自己需要开放什么在开,以下例子也是在此基础上的)iptables 一些参数名称:四表五链:fifter表、NAT表、Mangle表、Raw表。

INPUT 链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链INPUT链–处理来自外部的数据。

OUTPUT链–处理向外发送的数据。

FORWARD链–将数据转发到本机的其他网卡设备上。

PREROUTING链–处理刚到达本机并在路由转发前的数据包。

它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

(NAT表需要开启linux路由net.ipv4.ip_forward = 1)POSTROUTING链–处理即将离开本机的数据包。

它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

OUTPUT链–处理本机产生的数据包。

iptables 新建时情况所有记录iptables -Fiptables -Xiptables -F -t mangleiptables -t mangle -Xiptables -F -t natiptables -t nat -X开放22 SSH端口iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT (允许外部访问本机的22端口)iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (有进就有出,IP包是来回的)例如一条比较完整的SSH端口限制:(意思为:从eth0进来的SSH访问,除了公司192.168.16.0/24不限制,其他的地址都限制为每个ip最多5个SSH连接,且只为NEW和ESTABLISHED的连接,其他的都拒接)iptables -A INPUT -i eth0 ! -s 192.168.16.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -m connlimit --connlimit-above 5 -j REJECT----iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT (允许本机去ssh其他的服务器的22端口)iptables -A INPUT -p tcp --sport 22 -j ACCEPT设置默认规则为DROPiptables -P INPUT DROPiptables -P OUTPUT DROP此时占时不要service iptables save,先用客户端ssh连接一下服务器,看看可以连接吗?如果不行最起码还可以重启,这样规则没保存重启是不生效,如果保存了发现不通就麻烦一些了!当发现可以SSH的时候,我们就可以继续下面的步骤了!打开回环地址,为了本地访问,如本地访问数据库之类iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT打开服务器的ping功能,我觉得有必要打开,可以检测服务器状况iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT (此2条规则是允许本机ping外网的ip,不包括域名,其中8是icmp的请求,0是icmp的响应)iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT----iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT (此2条规则是允许外部ping本机)iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT允许内部ping外部的域名iptables -A INPUT -p udp --sport 53 -j ACCEPTiptables -A OUTPUT -p udp --dport 53 -j ACCEPT允许外部访问本机的80服务,且只允许新连接的和已经连接的会话(状态检测)iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT允许外部访问我本地多个端口如 8080,8081,8082,且只允许是新连接,已经连接的和已经连接的在延伸出新连接的会话iptables -A INPUT -p tcp -m multiport --dport 8080,8081,8082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPTiptables -A OUTPUT -p tcp -m multiport --sport 8080,8081,8082 -m state --state ESTABLISHED -j ACCEPT 允许外部访问本机81端口,且本机初始只允许有200个连接,超过了此数量,然后每秒新增加2个连接,如果访问超过此限制则拒接(此方式可以限制一些攻击)iptables -A INPUT -p tcp --dport 81 -m limit --limit 2/s --limit-burst 200 -j ACCEPTiptables -A OUTPUT -p tcp --sport 81 -j ACCEPT限制除用户192.168.16.99以外的IP连接数为50 (相当于可以给自己开特权^_^)iptables -A FORWARD -p tcp -s !192.168.16.99 -m connlimit --connlimit-above 50 -j REJECTTCP匹配扩展协议--tcp-flagsiptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK,RST SYN (表示 SYN,FIN,ACK,RST的标识都检查,但只匹配SYN标识)iptables -A INPUT -p tcp --syn (如果这是为了匹配SYN标识位也可以写成这样,选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。

iptables 配置nat masquerade规则

iptables 配置nat masquerade规则

iptables 配置nat masquerade规则iptables是Linux操作系统中一个重要的防火墙软件,它可以用来配置和管理网络数据包的转发和过滤规则。

其中一项常见的配置是nat masquerade规则,用于实现网络地址转换(Network Address Translation,NAT),将内部局域网的私有IP地址转换为公共IP地址,实现内网与外网的通信。

本文将逐步解释iptables配置nat masquerade 规则的步骤和原理。

第一步:了解nat masquerade的原理在深入了解iptables配置nat masquerade规则之前,我们首先需要了解nat masquerade的原理。

当内部局域网上的设备通过路由器连接到互联网时,由于内网使用的是私有IP地址,而互联网上使用的是公共IP地址,所以需要进行地址转换。

nat masquerade将内部局域网的私有IP 地址转换为路由器的公共IP地址,使得内网设备可以正常访问互联网。

第二步:确认系统中是否已安装iptables在开始配置nat masquerade规则之前,我们需要确认系统中是否已经安装了iptables。

可以通过在终端执行以下命令来检查:shelliptables -V如果系统已安装iptables,将显示出iptables的版本号和其他信息。

如果系统未安装iptables,可以通过以下命令来安装:shellsudo apt-get install iptables请根据使用的Linux发行版选择相应的命令。

第三步:创建一个新的iptables链接下来,我们需要创建一个新的iptables链来存储nat masquerade规则。

可以使用以下命令创建一个名为"MASQUERADE"的新链:shellsudo iptables -t nat -N MASQUERADE这将在iptables的nat表中创建一个新的自定义链。

Linux命令高级技巧使用iptables进行端口转发和NAT

Linux命令高级技巧使用iptables进行端口转发和NAT

Linux命令高级技巧使用iptables进行端口转发和NAT在Linux系统中,iptables是一个非常强大的工具,用于配置和管理网络包过滤规则。

除了基本的网络包过滤功能,iptables还可以用于端口转发和网络地址转换(NAT)。

本文将介绍如何使用iptables进行端口转发和NAT,以及一些高级技巧。

1. 端口转发端口转发是一种将网络流量从一个端口转发到另一个端口的技术。

它在网络中广泛应用于代理服务器、端口映射、负载均衡等场景。

下面是使用iptables进行端口转发的示例命令:```iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.100:80```在上述命令中,`-t nat`表示我们要操作的是`nat`表,`-A PREROUTING`表示将规则添加到`PREROUTING`链中,`-p tcp --dport 8080`表示匹配TCP协议和目标端口号8080,`-j DNAT`表示采取目标网络地址转换,`--to-destination 192.168.0.100:80`表示将数据包转发到目标IP地址192.168.0.100的80端口。

2. 网络地址转换(NAT)网络地址转换(NAT)是一种将私有网络中的IP地址转换为公共网络中的IP地址的技术。

它广泛应用于家庭网络和企业网络中,允许多台设备共享一个公共IP地址。

下面是使用iptables进行NAT的示例命令:```iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE```在上述命令中,`-t nat`表示我们要操作的是`nat`表,`-A POSTROUTING`表示将规则添加到`POSTROUTING`链中,`-s192.168.0.0/24`表示源IP地址为192.168.0.0/24的网络,`-o eth0`表示出去的网络接口为eth0,`-j MASQUERADE`表示使用动态地址转换。

Linux下iptables超详细教程和使用示例

Linux下iptables超详细教程和使用示例

Linux下iptables超详细教程和使⽤⽰例iptables的结构:iptables由上⽽下,由Tables,Chains,Rules组成。

⼀、iptables的表tables与链chainsiptables有Filter, NAT, Mangle, Raw四种内建表:1. Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链 – 处理来⾃外部的数据。

OUTPUT链 – 处理向外发送的数据。

FORWARD链 – 将数据转发到本机的其他⽹卡设备上。

2. NAT表NAT表有三种内建链:PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。

它会转换数据包中的⽬标IP地址(destination ip address),通常⽤于DNAT(destination NAT)。

POSTROUTING链 – 处理即将离开本机的数据包。

它会转换数据包中的源IP地址(source ip address),通常⽤于SNAT(source NAT)。

OUTPUT链 – 处理本机产⽣的数据包。

3. Mangle表Mangle表⽤于指定如何处理数据包。

它能改变TCP头中的QoS位。

Mangle表具有5个内建链(chains):PREROUTINGOUTPUTFORWARDINPUTPOSTROUTING4. Raw表Raw表⽤于处理异常,它具有2个内建链:PREROUTING chainOUTPUT chain5.⼩结⼆、IPTABLES 规则(Rules)规则的关键知识点:Rules包括⼀个条件和⼀个⽬标(target)如果满⾜条件,就执⾏⽬标(target)中的规则或者特定值。

如果不满⾜条件,就判断下⼀条Rules。

⽬标值(Target Values)在target⾥指定的特殊值:ACCEPT – 允许防⽕墙接收数据包DROP – 防⽕墙丢弃包QUEUE – 防⽕墙将数据包移交到⽤户空间RETURN – 防⽕墙停⽌执⾏当前链中的后续Rules,并返回到调⽤链(the calling chain)中。

iptables命令详解附实例

iptables命令详解附实例
-s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包
-d:匹配目的地址,可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则)
匹配所有访问本机 IP 的数据包,匹配到的丢弃
-I 链名 [规则号码]
INSERT,插入一条规则
例如:
iptables -I INPUT -j DROP
注意:
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
-F [链名]
FLUSH,清空规则
例如:
iptables -F INPUT
清空 filter 表 INPUT 链中的所有规则
iptables -t nat -F PREROUTING
清空 nat 表 PREROUTING 链中的所有规则
注意:
1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则
2、-P 设置了 DROP 后,使用 -F 一定要小心!!!
3、如果不写链名,默认清空某表里所有链里的所有规则
-[vxn]L
-L 列出规则
·流入、流出接口(-i、-o)
·来源、目的地址(-s、-d)
·协议类型 (-p)
·来源、目的端口(--sport、--dport)

Iptables 应用解析II---NATMangle

Iptables 应用解析II---NATMangle

Iptables 应用解析II---NAT/Mangle (ZZ)来源: ChinaUnix博客日期:2009.04.29 21:15(共有条评论) 我要评论Iptables 应用解析II---NAT/Mangle上篇Filter的解析已是一周前的事了,上周一直比较忙也没时间整理繁琐的笔记.呵呵,这周补上吧!接上篇Filter来介绍NAT Mangle的功能及用法.亦附上数据穿越IP层的示意图:1.NAT --- Network Address Translation 网络地址转换网络地址转换即改变数据包的源/目的地址,做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。

属于一个流的包只会经过这个表一次。

如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地被做相同的操作。

也就是说,余下的包不会再通过这个表,一个一个的被NAT,而是自动地完成。

这就是我们为什么不应该在这个表中做任何过滤的主要原因。

PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,OUTPUT链改变本地产生的包的目的地址,POSTROUTING链在包就要离开防火墙之前改变其源地址。

所以NAT分为SNAT DNAT SNAT作用只限于POSTROUTING 而DNAT作用于PREROUTING OUTPUTA.SNAT 源地址NAT常用于linux网关例:内网10.0.0.0/8 外网192.168.14.14/24 内网通过此外网机器访问外网#iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to 192.168.14.14 网关凡是来自内网10.0.0.0/8的包,把src换成192.168.14.14转发出若把-j SNAT --to192.168.14.14换为MASQUERDE 适合动态可变的IP,即根据本机路由选择IP 注:DNAT由网关192.168.14.14自动完成B.DNAT 目的地址NAT常用于解决内网的Server发布内网端口的映射例:内网:10.0.0.2/8:80 外网:192.168.14.14/24:8001#iptables -t nat -A PREROUTING -d 192.168.14.14 -p tcp --dport 8001 -j DNAT --to10.0.0.2:80凡目的地址为192.168.14.14:8001的数据包目的地址改为10.0.0.2:80注:--to [ipaddr]-[ipaddr] [:port-port] 可多IP(范围)作负载均衡(轮转),但存在单点故障#iptables -t filter -A FORWARD -p udp -j DROP#iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p udp --dport 53 -j DNAT --to192.168.14.254上面二条规则限制网关将不转发udp包,内网的任何DNS查询将被发往指定的企业DNS服务器,实现DNS的透明代理.#iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp--dport 80 -j DNAT --to 192.168.14.14:3128 此句实现web透明代理#iptables -t nat -I PREROUTING -m mac --mac-source 00:1A:A0:98:B1:6E -j DROP#iptables -A FORWARD -i eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT 网关常用 #iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 端口NAT #iptables -A FORWARD -s 192.168.1.189 -m limit –limit 20/s -j ACCEPT#iptables -A FORWARD -s 192.168.1.189 DROP 以二句用在网关上限速..iprange模块的应用..#iptables -t nat -I PREROUTING -i eth2 -m iprange--src-range 192.168.1.102-192.168.1.102 -j ACCEPT #iptables -t nat -A PREROUTING -m iprange --src-range 192.168.0.20-192.168.0.255 -i eth1 -p tcp -m tcp --dport 1:65535 -j REDIRECT --to-ports 80string模块的应用..#iptables -I FORWARD -s 192.168.1.189 -m string --string "" -j DROP-m comment --comment "denny go to "#iptables -I FORWARD -m string --string "腾讯" -j DROP#iptables -I FORWARD -s 192.168.1.189 -m string --string "" -j DROP#iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROPcomment模块的应用..#iptables -I FORWARD -s 192.168.1.189 -p tcp --dport 80 -j DROP-m comment --comment "the bad guy can not online"#iptables -I FORWARD -s 192.168.3.159 -m string --string "" -j DROP-m comment --comment "denny go to "其它常应用:#iptables -t nat -I PREROUTING -p udp --dport 53 -j ACCEPT#iptables -t nat -I PREROUTING -p tcp --dport 80 -j ACCEPT#iptables -t nat -I PREROUTING -p gre -j ACCEPT#iptables -t nat -I PREROUTING -p icmp -j ACCEPT#iptables -A INPUT -i tun+ -j ACCEPT#iptables -A FORWARD -i tun+ -j ACCEPT2.Mangle 数据包高级管理这个表主要用来mangle数据包。

iptables系统配置防火墙和NAT功能的实例学习

iptables系统配置防火墙和NAT功能的实例学习

iptables系统配置防火墙和NAT功能的实例学习来源: ChinaUnix博客日期:2007.11.01 11:55(共有0条评论) 我要评论关于Slackware 9.1.0 的配置说明********************************************************** ********关于防火墙系统恢复操作和启动方法说明******************** **********************************************************该系统主要作用就是对内部服务器作静态nat映射和端口访问控制。

在防火墙中,系统启动时已经自动启动了以上防火墙脚本,启动位置为:/etc/rc.d/rc.local文件中,sh /etc/rc.d/nat_firewall.sh #在系统启动时自动启动该脚本如果需要手动启用防火墙和静态nat映射功能,操作以下步骤即可。

cd /etc/rc.d/./portnat.sh如果用户不需要对内部服务器作任何端口控制,只需要作静态nat映射,只要执行以下文件,即可恢复不设防火墙状态。

cd /etc/rc.d/./no_firewall.sh*********************************************************** *****关于Slackware 9.1.0 系统配置防火墙和NAT功能的配置说明*********(nat_firewall.sh) ***********************************************************#!/bin/sh# make:zcatlinux# time:2004-06-18# e-mail:xuequansongmo@PATH=/sbin:/bin:/usr/sbin:/usr/bin#设置内部服务器对外的tcp端口,如果需要修改对内部访问的端口号,直接在这里修改即可,#添加规则就是之间端口号之间有一个空格就可以了。

Iptables防火墙与NAT的服务(一)

Iptables防火墙与NAT的服务(一)

Iptables防火墙与NAT的服务(一) Iptables防火墙与NAT的服务防火墙是保护计算机及网络的一种重要安全措施,常用的防火墙包括硬件防火墙和软件防火墙。

Iptables是一种常用的软件防火墙,它具有灵活性高、配置简单等优点。

除了提供基本的网络安全功能外,Iptables还可以提供网络地址转换(NAT)的服务。

下面将详细介绍Iptables防火墙和NAT的服务。

一、Iptables防火墙1. Iptables的基本概念和功能Iptables是一种Linux内核防火墙工具,用于过滤网络数据包。

它提供了一种灵活的配置方式,可以根据管理员的需求,对网络数据包进行过滤、修改或重定向等操作。

常用的Iptables命令包括iptables -L、iptables -F、iptables -A等。

2. Iptables的配置文件Iptables的配置文件位于/etc/sysconfig/iptables,管理员可以通过编辑该文件来进行防火墙规则的添加、修改和删除。

每个规则由一个匹配条件和一个动作组成,如果数据包符合规则中的匹配条件,则执行规则中的动作。

3. Iptables的过滤规则Iptables支持不同类型的过滤规则,常见的规则如下:(1)INPUT:用于控制进入本机的数据包(2)OUTPUT:用于控制从本机出去的数据包(3)FORWARD:用于控制转发的数据包(4)PREROUTING:用于控制数据包到达本机前进行的操作(5)POSTROUTING:用于控制数据包离开本机后进行的操作二、NAT的服务1. NAT的基本概念NAT是一种网络地址转换技术,用于将一个IP地址转换成另一个IP地址,从而实现内网与外网之间的通信。

NAT常用于家庭或办公网络中,因为内网只有一个IP地址,而多个设备需要共享该IP地址。

NAT还可以提高网络安全性,因为外网无法直接访问内网设备。

2. Iptables的NAT规则Iptables可以通过NAT规则实现网络地址转换。

高级技巧使用iptables进行端口转发与NAT配置

高级技巧使用iptables进行端口转发与NAT配置

高级技巧使用iptables进行端口转发与NAT配置使用iptables进行端口转发与NAT配置是网络管理中常见的高级技巧。

本文将介绍iptables的基本概念和配置方法,并详细讲解如何使用iptables进行端口转发和NAT配置。

一、iptables概述iptables是Linux操作系统中用于管理网络数据包的工具。

它可以根据预设的规则对进出的数据包进行过滤、修改和重定向等操作。

iptables使用规则链(rule chain)来组织规则,并根据规则链的顺序逐一检查数据包。

根据规则链的配置不同,iptables可以实现防火墙、端口转发和网络地址转换(NAT)等功能。

二、端口转发端口转发是指将网络数据包从一个端口转发到另一个端口。

使用iptables进行端口转发时,首先需要开启网络包转发功能,命令如下:```echo 1 > /proc/sys/net/ipv4/ip_forward```接下来,使用iptables设置端口转发规则,命令如下:```iptables -t nat -A PREROUTING -p tcp --dport 源端口 -j DNAT --to-destination 目标IP:目标端口```其中,-t nat表示使用nat表,-A PREROUTING表示在数据包进入路由之前进行转发,-p tcp表示转发TCP协议的数据包,--dport指定源端口,-j DNAT表示进行目标地址转换,--to-destination指定目标IP和端口。

三、NAT配置NAT配置是指将私有网络中的IP地址转换为公网IP地址,使内部网络可以访问外部网络。

使用iptables进行NAT配置时,需要开启网络地址转换功能,命令如下:```echo 1 > /proc/sys/net/ipv4/ip_forward```然后,设置NAT规则,命令如下:```iptables -t nat -A POSTROUTING -s 内网IP/子网掩码 -j SNAT --to-source 公网IP```其中,-t nat表示使用nat表,-A POSTROUTING表示在数据包离开网关之前进行转发,-s指定源IP地址范围,-j SNAT表示进行源地址转换,--to-source指定公网IP。

iptables 配置nat masquerade规则 -回复

iptables 配置nat masquerade规则 -回复

iptables 配置nat masquerade规则-回复如何在iptables中配置nat masquerade规则。

第一步:了解NAT和Masquerade的概念和功能在开始配置iptables之前,我们首先需要了解NAT(Network Address Translation)和Masquerade(伪装)的概念和功能。

NAT是一种网络地址转换技术,它允许将私有IP地址转换为公有IP地址,从而实现内部网络与外部网络之间的通信。

NAT的作用是解决IPv4地址不足的问题,并且可以提高网络安全性,因为它隐藏了内部网络的真实IP 地址。

Masquerade是NAT的一种特殊形式,其中NAT规则是动态创建的。

当一个数据包出去时,Masquerade规则会自动将源IP地址替换为外部接口的IP地址,并将其映射回答数据包的源地址。

这样,只有一个公共IP 地址可以代表整个内部网络。

第二步:确定启用NAT和Masquerade功能的必要性在开始配置之前,需要确定是否需要启用NAT和Masquerade功能。

在许多情况下,这两个功能是必需的,例如:1. 当内部网络中的计算机需要通过Internet访问外部资源时,需要使用NAT和Masquerade功能。

由于内部网络使用的是私有IP地址,所以需要将其转换为公共IP地址,以便与外部网络通信。

2. 如果您有多个内部网络(例如,它们使用不同的子网),并且您想要使用一个公共IP地址代表这些内部网络,那么您需要使用NAT和Masquerade功能来实现这一目标。

第三步:进入iptables配置界面在Linux系统中,我们可以使用iptables命令来配置防火墙规则,包括NAT和Masquerade规则。

首先,我们需要进入iptables配置界面。

在大多数Linux发行版中,可以使用以下命令进入iptables配置界面:sudo iptables -t nat -I PREROUTING -p tcp dport 80 -j DNATto-destination 192.168.1.2:80此命令打开了一个加入PREROUTING 链的规则,匹配来自任何源IP地址、任何TCP目标端口为80的数据包,并将其目标更改为192.168.1.2:80。

iptables dnat snat 例子

iptables dnat snat 例子

iptables中的DNAT和SNAT是网络中经常使用的两种功能,它们分别用于目的位置区域的转换和源位置区域的转换。

下面我们通过一些例子来详细了解它们的使用方法和作用。

1. 使用iptables进行DNATDNAT(Destination Network Address Translation)用于目的位置区域的转换,通常用来实现端口映射或负载均衡等功能。

假设有一台内网服务器,IP位置区域为192.168.1.100,想要将外部访问该服务器的80端口映射到内网的8080端口上。

可以使用如下iptables规则来实现DNAT:```bashiptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080```这条规则的意思是,当有TCP协议的数据包到达本机,并且目标端口是80时,将其目标位置区域转换为192.168.1.100的8080端口。

这样就实现了外部访问80端口自动映射到内网的8080端口。

2. 使用iptables进行SNATSNAT(Source Network Address Translation)用于源位置区域的转换,通常用来实现内网主机对外访问时的位置区域转换。

假设有一台内网主机,IP位置区域为192.168.1.200,想要将其对外访问时的源位置区域转换为外网IP位置区域202.100.100.100。

可以使用如下iptables规则来实现SNAT:```bashiptables -t nat -A POSTROUTING -s 192.168.1.200 -j SNAT --to-source 202.100.100.100```这条规则的意思是,当有数据包从192.168.1.200发往外部网络时,将其源位置区域转换为202.100.100.100。

这样就实现了内网主机对外访问时自动使用外部IP位置区域。

Iptables防火墙内外网做nat

Iptables防火墙内外网做nat

Iptables防火墙原理防火墙技术分为三种1、包过滤,在ACL中使用ip地址或端口号进行过滤2、ALG,应用层网关,工作类是代理服务器,linux的squid和win的ISA都是出色的ALG3、状态化包过滤,使用ACL,通过了解连接状态来确定访问行为iptables支持包过滤和状态化包过滤具体防火墙技术相当深奥,不是一言两语可以说清楚我们用一个实例来分析吧,这个需要对路由和nat要有一定了解才行实例1:一个企业使用linux作为网管和防火墙,如果难度再大点就加个DMZ区域这样就要3块网卡通过了解DMZ特性1、不可以访问内网2、内网和外网可以访问3、不可以访问外网通过这三个特性配置DMZ的网段就可以了DMZ是不允许访问内网的,避外网通过攻破DMZ,进而攻击内网DMZ位于网络的哪个位置?内网和外网之间在硬件设备上就是他自动帮你实现了这些功能,在linux就需要你了解原理,然后自己手动配置,达到相同的效果如果涉及到DMZ的话,肯定还会有状态化包过滤好像说深了点点,我们继续刚才的课题作为网关需要设置全局的默认网关到外面那个网卡eth1内网我们使用eth0内网所有主机网关指向linux的eth0的IP地址,然后在服务器打开ip转发vim /etc/sysctl.conf他是内存正在运行的一些参数的配置文件, 禁ping那个参数可以写到这里,每次开机读取net.ipv4.ip_forward = 0值改成1更新系统内核参数sysctl -p现在我们的IP包已经可以出到广域网了,但是广域网上的路由器会丢弃我们内网的IP地址, 所以我们要做nat好了,开始说到iptables了要做nat就需要用到iptables的nat表我们是从里面到外面的包,所以要修改源IP,就叫做源NAT红帽的官方教材上讲iptables也是用的这个图我们要出去,就是postrouting现在我们来配置这条命令iptables -t nat -A POSTROUTING -o eth1 -s 192.168.8.0/24 -j MASQUERADE我们来讲解这条命令iptables 是命令本身-t 是执行表,iptables有两个表,一个是filter:过滤的表一个是nat,就是NAT表,Network Address Translator然后-A,-A的意思就是添加一条链这里添加的链是POSTROUTING链,就是源NAT-o 是出去的网卡设备,我们使用的是eth1网卡-s 是源地址,我们设置内网的192.168.8.0/24网段-j是动作,MASQUERADE 动态源地址转换(动态IP的情况下使用)如果我们使用的静态外网地址,就可以这样写iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 1.1.1.1把出去的地址都转换成1.1.1.1好了,现在内网用户可以通过linux网关上网了这个时候我们为了保证内网安全,我们就需要控制进来的包了现在我们不考虑DMZ,或者是内部有服务器的问题,这样,外部进来的包,我们默认都要丢弃比方说,你的代理:192.168.0.1 而我的pc在另外一个网段,192.168.8.88 gw192.168.8.188这样的话就还需要一个网卡了,通过这个网卡来路由撒为了防止外网伪装内网IP进行攻击。

iptables 生效规则

iptables 生效规则

iptables 生效规则iptables是一种用于Linux操作系统的防火墙。

它可以使用规则来控制入站和出站数据包,从而保护系统免受恶意攻击。

在本文中,我们将讨论 iptables 规则如何生效,以及如何确保规则正确地应用于系统。

首先,需要了解的是 iptables 规则由五个不同的表组成:filter、nat、mangle、raw 和 security。

每个表都包含一组规则,用于控制不同类型的数据包。

例如,filter 表用于控制入站和出站数据包,nat 表用于网络地址转换,mangle 表用于修改数据包头部,raw 表用于控制数据包的生命周期,security 表用于 SELinux 安全性策略。

要使 iptables 规则生效,需要使用 iptables 命令将规则添加到适当的表中。

例如,以下命令将向 filter 表中添加一个允许从10.0.0.0/8 网段进入的 SSH 连接:iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport ssh -j ACCEPT 在上面的命令中,-A 选项表示要添加规则到表中的末尾,-s 选项指定源 IP 地址,-p 选项指定协议类型,--dport 选项指定目标端口,-j 选项指定要执行的动作(在这种情况下是接受)。

一旦规则添加到表中,它们将立即生效。

但是,如果系统重新启动,所有未保存的规则将被清除。

因此,为了确保规则在系统重新启动后仍然生效,需要使用以下命令将规则保存到文件中:iptables-save > /etc/sysconfig/iptables这将把当前的 iptables 规则保存到/etc/sysconfig/iptables 文件中。

在系统重新启动后,iptables 将从该文件中加载规则。

总之,要使 iptables 规则生效,需要将规则添加到适当的表中,并确保它们在系统重新启动后仍然生效。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于 iptables 入站出站以及NAT实例本文是自己工作上的iptables笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!iptbales默认ACCEPT策略,也称通策略,这种情况下可以做拦截策略,还有种叫堵策略,然后开放通的规则。

(我偏向堵策略,自己需要开放什么在开,以下例子也是在此基础上的)iptables 一些参数名称:四表五链:fifter表、NAT表、Mangle表、Raw表。

INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链INPUT链–处理来自外部的数据。

OUTPUT链–处理向外发送的数据。

FORWARD链–将数据转发到本机的其他网卡设备上。

PREROUTING链–处理刚到达本机并在路由转发前的数据包。

它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

(NAT表需要开启linux路由 net.ipv4.ip_forward = 1)POSTROUTING链–处理即将离开本机的数据包。

它会转换数据包中的源IP 地址(source ip address),通常用于SNAT(source NAT)。

OUTPUT链–处理本机产生的数据包。

iptables 新建时情况所有记录iptables -Fiptables -Xiptables -F -t mangleiptables -t mangle -Xiptables -F -t natiptables -t nat -X开放22 SSH端口iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT (允许外部访问本机的22端口)iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (有进就有出,IP包是来回的)例如一条比较完整的SSH端口限制:(意思为:从eth0进来的SSH访问,除了公司192.168.16.0/24不限制,其他的地址都限制为每个ip最多5个SSH连接,且只为NEW和ESTABLISHED的连接,其他的都拒接)iptables -A INPUT -i eth0 ! -s 192.168.16.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -m connlimit --connlimit-above 5 -j REJECT----iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT (允许本机去ssh其他的服务器的22端口)iptables -A INPUT -p tcp --sport 22 -j ACCEPT设置默认规则为DROPiptables -P INPUT DROPiptables -P OUTPUT DROP此时占时不要service iptables save,先用客户端ssh连接一下服务器,看看可以连接吗?如果不行最起码还可以重启,这样规则没保存重启是不生效,如果保存了发现不通就麻烦一些了!当发现可以SSH的时候,我们就可以继续下面的步骤了!打开回环地址,为了本地访问,如本地访问数据库之类iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT打开服务器的ping功能,我觉得有必要打开,可以检测服务器状况iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT (此2条规则是允许本机ping外网的ip,不包括域名,其中8是icmp的请求,0是icmp的响应)iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT----iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT (此2条规则是允许外部ping本机)iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT允许内部ping外部的域名iptables -A INPUT -p udp --sport 53 -j ACCEPTiptables -A OUTPUT -p udp --dport 53 -j ACCEPT允许外部访问本机的80服务,且只允许新连接的和已经连接的会话(状态检测)iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT允许外部访问我本地多个端口如 8080,8081,8082,且只允许是新连接,已经连接的和已经连接的在延伸出新连接的会话iptables -A INPUT -p tcp -m multiport --dport 8080,8081,8082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPTiptables -A OUTPUT -p tcp -m multiport --sport 8080,8081,8082 -m state --state ESTABLISHED -j ACCEPT允许外部访问本机81端口,且本机初始只允许有200个连接,超过了此数量,然后每秒新增加2个连接,如果访问超过此限制则拒接(此方式可以限制一些攻击)iptables -A INPUT -p tcp --dport 81 -m limit --limit 2/s --limit-burst 200 -j ACCEPTiptables -A OUTPUT -p tcp --sport 81 -j ACCEPT限制除用户192.168.16.99以外的IP连接数为50 (相当于可以给自己开特权^_^)iptables -A FORWARD -p tcp -s !192.168.16.99 -m connlimit --connlimit-above 50 -j REJECTTCP匹配扩展协议--tcp-flagsiptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK,RST SYN (表示SYN,FIN,ACK,RST的标识都检查,但只匹配SYN标识)iptables -A INPUT -p tcp --syn (如果这是为了匹配SYN标识位也可以写成这样,选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。

)实例://nmap-xmasiptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP (检查所以的标识位,匹配到FIN URG PSH的丢弃)//nmap-pushiptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP (检查所以的标识位,匹配到SYN RST ACK FIN URG的丢弃)// Nulliptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP (检查所以的标识位,没标志位的丢弃)iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP(检查SYN,RST标识位,匹配到 SYN,RST的丢弃,SYN是建立连接,RST是重置连接,所以这样的包是有问题的)iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP (检查SYN,FIN标识位,匹配到 SYN,FIN的丢弃,SYN是建立连接,FIN是结束连接,所以这样的包是有问题的)iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROPiptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROPSNAT 和 DNATSNAT:假如我要让公司192.168.10.0/24段的地址都通过linux服务器的eth0 :123.123.123.123上网iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 123.123.123.123DNATGATEWAY eth0:123.123.123.123 eth1:192.168.10.1 内网主机:192.168.10.10 要使访问123.123.123.123的80 自动跳到192.168.10.10的80端口上iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 80 -j DNAT --to-destination 192.168.10.10:80iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.10 --dport 80 -j SNAT --to-source 192.168.10.1 (内网之间进行nat才加上)第一条:将外部数据包的目的地址改到内网主机的指定端口第二条:转发前,将外部源地址改为内网本地地址。

相关文档
最新文档