2 小时玩转 iptables 企业版 v1_5_2
iptables使用详解

ptables简介iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
filter负责过滤数据包,包括的规则链有,input,output和forward;nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT,post routing用来修改源地址用来做SNAT。
iptables主要参数-A 向规则链中添加一条规则,默认被添加到末尾-T指定要操作的表,默认是filt er-D从规则链中删除规则,可以指定序号或者匹配的规则来删除-R进行规则替换-I插入一条规则,默认被插入到首部-F清空所选的链,重启后恢复-N新建用户自定义的规则链-X删除用户自定义的规则链-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,-s指定源地址-d指定目的地址-i进入接口-o流出接口-j采取的动作,accept,drop,snat,dnat,masquerade--sport源端口--dport目的端口,端口必须和协议一起来配合使用注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写iptable配置实例iptable基本操作iptables -L 列出iptables规则iptables -F 清除iptables内置规则iptables -X 清除iptables自定义规则设定默认规则在iptables规则中没有匹配到规则则使用默认规则进行处理iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP配置SSH规则iptables -A INPUT -p t cp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。
iptables操作手册

1iptables与firewalld的关系RHEL7.0以后,使用firewalld服务取代了iptables服务,但是依然可以使用iptables服务,只是默认不开启了,iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,是操作系统上的一种服务,将定义好的规则交给内核中的netfilter(网络过滤器)来读取,从而实现防火墙的功能,firewalld和iptables除了可以可以在inbond和outbond方向做策略限制以外,还能实现snat和dnat功能。
注意:firewalld和iptables同时只能运行一种服务,否则会出现不可预知的情况2iptables安装RHEL7.0以后,iptables默认不开启,需要安装iptables服务安装完成后3实验场景3.1源地址转换需求:源地址1(172.16.202.15)需要访问公网目的地址(192.168.111.245),源地址2(172.16.202.16)不需要访问公网。
内网两台服务器,分别为源地址1(172.16.202.15)和源地址2(172.16.202.16),公网出口处有一台centos 7.1的双网卡服务器,一个接口接内网(172.16.202.14),一个接口接外网(192.168.111.63)。
源地址1上首先需要保证和iptables服务器能够互通,并且有去往192.168.111.245的路由,路由下一跳需要指向iptables内网接口(172.16.202.14),由iptables服务器做源nat,把源地址(172.16.202.15)nat成公网接口地址(192.168.111.63),从而可以访问目的地址(192.168.111.245)。
一、首先在源地址1服务器上配置去往192.168.111.245的路由ip route add 192.168.111.245 via 172.16.202.14 //临时添加路由,重启网卡或者系统后,路由会丢失,建议做路由固化路由固化:在/etc/sysconfig/network-scripts目录下,新建一个route配置文件,vi route-eth0,新增一条路由,192.168.111.245/32 via 172.16.202.14,重启网卡即可生效二、iptables服务器上,配置snat策略iptables -t nat -A POSTROUTING -s 172.16.202.15/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63注释:-t table table to manipulate (default: `filter') //这个选项指定命令要操作的匹配包的表。
Linux命令高级技巧使用iptables命令进行防火墙配置

Linux命令高级技巧使用iptables命令进行防火墙配置Linux系统中,iptables是一个非常常用的命令,用于配置Linux操作系统的防火墙规则。
掌握iptables的高级技巧,可以帮助我们更好地保护系统安全和网络通信。
本文将介绍使用iptables命令进行防火墙配置的一些高级技巧,以帮助读者更好地理解和运用这个强大的工具。
一、什么是iptables命令iptables是一个在Linux内核中实现的防火墙工具,用于管理网络通信规则。
它允许我们定义输入、输出和转发数据包的规则,从而控制网络流量。
使用iptables命令,我们可以过滤和转发数据包,以及进行网络地址转换和端口转发等操作。
二、iptables配置文件在开始使用iptables命令之前,了解iptables的配置文件将有助于更好地理解和调整防火墙规则。
iptables的配置文件位于"/etc/sysconfig/iptables"路径下,可以使用文本编辑器打开进行编辑。
三、基本的iptables规则1. 允许特定IP地址访问若想允许特定IP地址访问服务器的某个端口,可以使用如下命令:```iptables -A INPUT -p tcp -s IP地址 --dport 端口号 -j ACCEPT```例如,若要允许IP地址为192.168.1.100的主机访问SSH端口(22),可以使用以下命令:```iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT```2. 允许特定IP地址范围访问如果要允许一个IP地址范围访问特定端口,可以通过指定源IP范围来实现。
例如,要允许192.168.1.0/24子网段中的主机访问SSH端口,可以执行如下命令:```iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT```此规则将允许192.168.1.0/24网段中的所有主机访问SSH端口。
Linux命令高级技巧使用iptables配置防火墙规则

Linux命令高级技巧使用iptables配置防火墙规则iptables是Linux系统上一款用于配置网络防火墙的工具。
通过使用iptables,可以实现对传入和传出网络数据包的过滤和转发,以保护服务器和网络的安全。
本文将介绍一些使用iptables配置防火墙规则的高级技巧。
一、iptables概述iptables是Linux系统上的一个基于内核模块netfilter的防火墙软件。
通过对数据包进行过滤和转发,可以实现网络安全的保护。
其主要功能包括:过滤、NAT和转发。
二、iptables基本命令1. 查看当前iptables规则iptables -L2. 清除当前iptables规则iptables -F3. 允许来自指定IP的数据包通过iptables -A INPUT -s 192.168.1.100 -j ACCEPT4. 阻止来自指定IP的数据包通过iptables -A INPUT -s 192.168.1.100 -j DROP5. 允许某一特定端口的数据包通过iptables -A INPUT -p tcp --dport 80 -j ACCEPT6. 允许所有已建立的连接通过iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT7. 阻止所有其他数据包通过iptables -A INPUT -j DROP三、iptables高级技巧1. 使用iptables实现端口转发在实际应用中,经常需要将某一端口的访问请求转发到另一台服务器上。
通过iptables可以轻松实现该功能。
例如,将来自本地端口8080的访问请求转发到内网服务器192.168.1.100的80端口:iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:802. 使用iptables实现负载均衡通过使用iptables和SNAT,可以实现对多台服务器的负载均衡。
iptables的用法

iptables的用法iptables是Linux系统中防火墙工具,用于配置、管理和过滤网络流量。
它可以用于设置各种规则,以控制网络传输,过滤入站和出站流量,并允许或拒绝特定的网络连接。
以下是iptables的常见用法:1. 查看当前的iptables规则:```iptables -L```2. 清除当前的iptables规则:```iptables -F```3. 允许特定IP地址的访问:```iptables -A INPUT -s <IP_ADDRESS> -j ACCEPT```4. 禁止特定IP地址的访问:```iptables -A INPUT -s <IP_ADDRESS> -j DROP```5. 允许特定端口的访问:```iptables -A INPUT -p tcp --dport <PORT_NUMBER> -j ACCEPT```6. 允许特定协议的访问:```iptables -A INPUT -p <PROTOCOL> -j ACCEPT```7. 配置端口转发:```iptables -t nat -A PREROUTING -p tcp --dport <SOURCE_PORT> -j DNAT --to-destination<DESTINATION_IP>:<DESTINATION_PORT>```8. 配置端口映射:```iptables -t nat -A POSTROUTING -p tcp -d <DESTINATION_IP> --dport<DESTINATION_PORT> -j SNAT --to-source <SOURCE_IP>```以上只是iptables的一些常见用法,它还提供了更多高级功能和选项,可以根据具体需求进行配置和使用。
Linux命令高级技巧使用iptables和ufw命令进行网络防火墙配置

Linux命令高级技巧使用iptables和ufw命令进行网络防火墙配置Linux命令高级技巧:使用iptables和ufw命令进行网络防火墙配置在Linux操作系统中,网络防火墙是保护系统网络安全的重要组成部分。
通过合理配置网络防火墙规则,可以控制网络流量的进出,阻挡恶意攻击和未经授权的访问,确保系统的安全性。
本文将介绍Linux 中的两个重要命令iptables和ufw,以及使用它们进行网络防火墙配置的高级技巧。
一、iptables命令iptables是Linux中主要的防火墙工具,可以在内核级别对进出的网络流量进行过滤、转发和NAT(Network Address Translation)等操作。
下面是一些常用的iptables命令及其用法:1. 启用IP转发功能在做网络防火墙配置之前,需要确保系统开启了IP转发功能。
可以使用以下命令启用:```shellsysctl -w net.ipv4.ip_forward=1```此命令将系统的`net.ipv4.ip_forward`参数设置为1,即开启IP转发功能。
2. 基本规则设置使用以下命令创建一条基本的防火墙规则,允许本地主机的所有传入和传出流量:```shelliptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT```这些命令将INPUT、OUTPUT和FORWARD链的默认策略都设置为ACCEPT,即允许全部流量。
3. 添加规则可以使用iptables命令添加特定的防火墙规则,以允许或拒绝特定的流量。
例如,以下命令将允许来自192.168.1.100的主机的SSH连接:```shelliptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT```此命令将在INPUT链中添加一条规则,允许源IP为192.168.1.100,目标端口为22的TCP连接。
iptables 详细教程

iptables四个表五条链其实关于iptables的使用网上的资料和教程也比较多,主要是要理解其中的路由前和路由后每个表和链所处的位置和作用,明白了也就简单了,以下是我转载的觉得写的比较详细的一篇博客,有时间我将写一篇关于这些表和链的实质性的配置例子。
一、netfilter和iptables说明:1、 netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。
这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。
在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter 和 iptables 组成。
(1). netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
(2). iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
iptables包含4个表,5个链。
其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。
2、4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filt er表)。
表的处理优先级:raw>mangle>nat>filter。
filter:一般的过滤功能nat:用于nat功能(端口映射,地址映射等)mangle:用于对特定数据包的修改raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能RAW 表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。
Linux命令高级技巧使用iptables命令配置防火墙

Linux命令高级技巧使用iptables命令配置防火墙Linux命令高级技巧:使用iptables命令配置防火墙防火墙是保护计算机网络安全的重要工具。
在Linux系统中,iptables是一款强大的防火墙管理工具,可以通过配置规则,限制网络访问和数据传输,提高系统的安全性。
本文将介绍如何使用iptables命令进行高级配置和技巧应用。
一、iptables命令简介iptables是Linux系统中的一个工具集,用于配置ipv4数据包的过滤,转发和网络地址转换(NAT)。
通过iptables命令,可以设置规则来控制数据包的流动,实现防火墙的功能。
iptables命令的主要参数包括:- A: 添加规则- D: 删除规则- I: 插入规则- L: 列出规则- F: 清空规则- P: 设置默认策略- S: 保存规则- R: 替换规则- N: 新建自定义链二、iptables配置基础1. 清空规则链在配置iptables之前,可以使用以下命令清空所有规则链,以确保开始时处于一个干净的状态:```shelliptables -Fiptables -Xiptables -Ziptables -t nat -F```2. 设置默认策略默认情况下,iptables会根据规则链上的规则来对数据包进行过滤,如果没有匹配到任何规则,则会根据默认策略来处理。
可以使用以下命令设置默认策略:```shelliptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT```3. 添加规则可以使用以下命令添加规则到指定的规则链,例如,添加允许SSH 访问的规则:```shelliptables -A INPUT -p tcp --dport 22 -j ACCEPT```4. 保存规则配置完iptables后,可以使用以下命令将规则保存到文件中,以便重启后自动加载:```shelliptables-save > /etc/iptables/rules.v4```三、高级配置和技巧1. 自定义链iptables支持用户自定义链,可以将一组规则封装到一个新链中,提高规则的可读性和管理性。
Linux命令高级技巧使用iptables进行网络流量控制

Linux命令高级技巧使用iptables进行网络流量控制在Linux操作系统中,iptables是一种强大的工具,用于管理网络流量以及进行网络流量控制。
使用iptables可以实现各种复杂的网络配置和管理任务,如防火墙设置、端口转发、网络地址转换(NAT)等。
本文将介绍一些使用iptables进行网络流量控制的高级技巧。
一、iptables简介iptables是一个内核模块,它是基于Netfilter框架的用户空间工具集,用于管理Linux内核中的数据包过滤规则。
iptables通过匹配数据包的源、目的地址、端口等关键字段,来决定对数据包的处理方式,可以允许、拒绝、重定向或修改数据包。
二、iptables基本用法在开始讲解高级技巧之前,我们先给出一些iptables的基本用法,以便更好地理解后续的内容。
1. 添加规则使用iptables命令添加规则的语法如下:```shelliptables -A <CHAIN> <MATCH_CONDITION> -j <ACTION>```其中,`<CHAIN>`表示规则链,如INPUT、FORWARD、OUTPUT 等;`<MATCH_CONDITION>`表示匹配条件,如源地址、目的地址、端口等;`<ACTION>`表示对匹配的数据包的处理方式,如ACCEPT、DROP、REJECT等。
例如,要允许来自192.168.1.100的主机访问本地的SSH服务(端口22),可以使用以下命令添加规则:```shelliptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT```2. 查看规则使用iptables命令查看规则的语法如下:```shelliptables -L```这会列出iptables中的所有规则,包括链的名称、规则的编号以及匹配条件和动作等信息。
Linux命令技巧使用iptables进行高级网络防火墙配置

Linux命令技巧使用iptables进行高级网络防火墙配置使用iptables进行高级网络防火墙配置在Linux系统中,iptables是一个非常强大的工具,它可以用于配置和管理网络防火墙。
通过使用iptables,我们可以实现高级的网络防火墙配置,以保护我们的计算机和网络资源免受潜在的安全威胁。
本文将介绍一些常用的Linux命令技巧,以帮助你更好地使用iptables进行高级网络防火墙配置。
1. 检查当前iptables规则使用以下命令可以查看当前的iptables规则:```shelliptables -L```该命令将显示当前生效的iptables规则列表,包括输入、输出和转发规则。
通过查看这些规则,可以了解当前系统的网络访问策略。
2. 添加规则可以使用以下命令添加iptables规则:```shelliptables -A <chain> <rule>```其中,`<chain>`表示规则要添加到的链,可以是输入链(INPUT)、输出链(OUTPUT)或转发链(FORWARD)等。
`<rule>`表示要添加的规则内容。
例如,如果要允许来自特定IP地址的HTTP访问,可以使用以下命令:```shelliptables -A INPUT -s <IP地址> -p tcp --dport 80 -j ACCEPT```该命令将添加一个在输入链中生效的规则,允许源IP地址为`<IP地址>`,目标端口为80的TCP连接。
3. 删除规则如果需要删除已添加的规则,可以使用以下命令:```shelliptables -D <chain> <rule_number>```其中,`<chain>`表示规则所在的链,`<rule_number>`表示规则在该链中的序号。
例如,如果要删除输入链中的第一条规则,可以使用以下命令:```shelliptables -D INPUT 1```该命令将删除输入链中的第一条规则。
Linux命令高级技巧使用iptables进行网络防火墙配置

Linux命令高级技巧使用iptables进行网络防火墙配置Linux命令高级技巧:使用iptables进行网络防火墙配置在网络安全领域,配置网络防火墙是一项关键任务。
为了保护网络免受未授权访问和恶意攻击,管理员需要掌握一些高级技巧来使用Linux命令iptables进行网络防火墙配置。
本文将介绍iptables的基本概念和使用方法,并提供一些高级技巧来加强网络防火墙的安全性。
1. iptables简介iptables是Linux系统中一款强大的防火墙工具,它能够根据管理员设定的规则筛选、修改和重定向网络数据。
iptables提供了一套规则集,允许管理员创建自定义的规则来控制数据包的流向和处理方式。
常用的iptables命令包括iptables、iptables-save、iptables-restore和iptables-apply等。
2. 基本用法iptables命令的基本语法如下:```bashiptables [-t 表名] 命令 [链名] [规则选项]```其中,表名可以是filter、nat或mangle,命令可以是-A(追加规则)、-D(删除规则)、-I(插入规则)等,链名可以是INPUT、FORWARD或OUTPUT等,规则选项包括-s(源IP地址)、-d(目标IP地址)、-p(协议类型)和-j(动作)等。
3. 添加规则为了保护网络,我们需要添加一些规则来控制数据包的流向和允许的服务。
例如,我们可以使用以下命令允许SSH连接: ```bashiptables -A INPUT -p tcp --dport 22 -j ACCEPT```上述命令在INPUT链中追加了一条规则,允许TCP协议的22端口的连接请求。
可以根据需要设置源IP地址或目标IP地址等其他规则选项。
4. 删除规则如果某条规则不再需要,可以使用iptables命令删除。
例如,我们可以使用以下命令删除上一节中添加的SSH规则:```bashiptables -D INPUT -p tcp --dport 22 -j ACCEPT```上述命令将从INPUT链中删除匹配的规则。
如何使用iptables命令在Linux中配置防火墙和网络转发

如何使用iptables命令在Linux中配置防火墙和网络转发由于网络安全的重要性日益凸显,配置防火墙和网络转发成为Linux系统管理员必备的技能之一。
在Linux系统中,iptables命令提供了灵活的方式来配置防火墙规则和网络转发设置。
本文将介绍如何使用iptables命令来完成这些任务。
一、什么是iptables命令iptables是Linux操作系统中一个非常强大的防火墙工具,它可以通过管理网络数据包的流动来控制网络访问权限。
iptables命令可以根据预先定义的规则集过滤网络数据包,拒绝无效或危险的连接,从而保护系统的安全性。
二、基本概念与术语在开始使用iptables命令之前,我们需要了解一些基本的概念和术语。
1. 表(Table):iptables命令使用表来组织和管理规则。
常用的表有:filter、nat和mangle等。
2. 链(Chain):每个表都包含多个链,链是规则的组合。
常用的链有:INPUT、FORWARD和OUTPUT等。
3. 规则(Rule):规则是iptables命令的基本单位,它定义了针对网络数据包的动作和匹配条件。
4. 动作(Action):动作定义了对匹配到的数据包的处理方式,常见的动作有:ACCEPT、DROP和REJECT等。
5. 匹配条件(Match):匹配条件定义了规则在应用到数据包时需要满足的条件。
常见的匹配条件有:source、destination和protocol等。
三、配置防火墙规则配置防火墙规则是保护系统安全的第一步。
使用iptables命令可以轻松地添加、修改和删除防火墙规则。
1. 查看当前防火墙规则首先,我们需要查看当前的防火墙规则,可以使用以下命令:```iptables -L```该命令将列出当前的防火墙规则,包括表、链、规则和动作等信息。
2. 添加规则要添加一个防火墙规则,可以使用以下命令:```iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT```该命令将允许来自192.168.0.0/24网段的TCP连接访问本地的SSH 服务。
iptables 命令参数

iptables 命令参数iptables 命令参数是 Linux 系统中一个非常强大的网络管理工具,可以用来配置和管理网络安全防护、流量的分配和限制等。
本文将分步骤介绍 iptables 命令的用法和一些常见的参数。
第一步:启动和停止 iptables 服务在 Linux 系统中, iptables 服务默认是启动的。
如果需要手动停止或启动 iptables 服务,可以使用如下命令:systemctl start iptables # 启动 iptables 服务systemctl stop iptables # 停止 iptables 服务第二步:查看 iptables 规则我们可以使用以下命令来查看当前系统中的 iptables 规则:iptables -L # 查看所有防火墙规则iptables -L -n -v # 显示更详细的信息其中 -n 参数用于显示 IP 地址而不是 DNS 名称,-v 参数用于显示详细的防火墙规则。
第三步:添加 iptables 规则添加 iptables 规则主要使用 -A 参数,它表示在当前防火墙规则下添加一个新规则。
例如,我们要允许来自 192.168.0.1 的 IP 访问我们的 Web 服务器(例如使用 80 端口),可以使用以下命令:iptables -A INPUT -p tcp -s 192.168.0.1 --dport 80 -j ACCEPT其中,-A INPUT 表示添加一个新规则到 INPUT 防火墙链中,-p tcp 表示限制TCP协议流量,-s 参数指定来源 IP 地址,--dport 参数指定目标端口号,-j ACCEPT 表示允许流量通过。
第四步:删除或清空 iptables 规则如果需要删除或清空 iptables 规则,可以使用如下命令:iptables -D INPUT 1 # 删除第一条 INPUT 规则iptables -F # 清空所有的规则其中 -D 参数用于删除指定的规则,-F 参数用于清空所有的规则。
iptables 自定义链 高级用法

I. 概述1.1 介绍iptables1.2 iptables的作用和重要性II. iptables基础知识2.1 iptables的工作原理2.2 iptables的基本命令和语法2.3 iptables的五张表格2.3.1 filter表2.3.2 nat表2.3.3 mangle表2.3.4 raw表2.3.5 security表III. iptables自定义链的概念和作用3.1 什么是iptables自定义链3.2 iptables自定义链的作用和好处 3.3 如何创建和删除iptables自定义链IV. iptables自定义链的高级用法4.1 链的顺序和优先级4.2 链的跳转和重定向4.3 链的条件匹配4.4 链的高级策略4.5 链的日志和统计V. 示例分析5.1 实际应用场景分析5.2 针对不同网络架构的iptables自定义链实现VI. 总结和展望6.1 对iptables自定义链的总结6.2 iptables自定义链的未来发展方向VII. 结语以上是文章的大纲和主要内容,希望能够满足您的需求。
如果还有其他要求或需要进一步讨论,欢迎您提出。
为了更好地理解iptables自定义链的高级用法,我们需要对iptables的基本原理和基础知识有清晰的认识。
iptables是一个功能强大的防火墙工具,它可以在Linux 系统中实现数据包的过滤、转发和修改等功能。
它的工作原理是根据规则表对数据包进行匹配和处理,每个规则表包括一系列规则链,而每个规则链则包括一系列规则,用于定义数据包的处理方式。
1.1 介绍iptablesiptables是一个在Linux内核中实现的防火墙工具,它可以在数据包通过Linux内核网络协议栈时对其进行过滤、转发和修改等操作。
通过iptables可以根据用户定义的规则过滤不同协议、端口、数据包的来源和目的位置区域等信息。
在网络安全应用中,iptables被广泛用于保护服务器和网络不受未经授权的访问和攻击。
Gentoo 防火墙配置(iptables)

Gentoo iptables 安装及配置浩龙目录第六章linux 防火墙iptables (1)6.1 安装iptables (1)6.2 配置网关脚本 (1)第六章linux 防火墙iptables6.1 安装iptabl es其实用gentoo 安装非常简单。
但在安装之前,我建议你先阅读一下platinum 写的《2 小时玩转iptables 企业版》emerge -av iptables //轻松安装6.2 配置网关脚本在给出网关配置我先把我的环境说一下,如下拓扑所示,我的网关是用于对内部提供上网服务的,所以需要两块网卡,一块接内部交换,另一块接外部网络。
图表1网络拓扑vi /proc/sys/net/ipv4/ip_forward //将0 改为1emerge -av iproute2 //安装iproute2 策略路由时用到vi /etc/iproute2/rt_tables //修改rt_tables 表,增加一行251 jishu针对公司网关一些配置我写了如下启动脚本,新建一个gateway.sh 脚本,加入以下脚本touch /etc/init.d/gateway.shchmod +x /etc/init.d/gateway.sh //授权可执行nano /etc/init.d/gateway.sh 加入以下内容=============我的网关脚本=========================================#! /bin/bashmodprobe nf_nat_ftpiptables -t nat -Fiptables -t filter -Fiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -i tap0 -j ACCEPTiptables -A INPUT -i eth1 -j ACCEPTiptables -A INPUT -p icmp -j ACCEPTiptables -A INPUT -i eth2 -p tcp -m multiport --dports 20,21,22,23,443,1234,8080 -j ACCEPTiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -P INPUT DROPiptables -t nat -A POSTROUTING -d 1.1.1.0/24 -j SNAT --to 1.1.1.254iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -j SNAT --to 192.168.0.254iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADEiptables -t nat -A POSTROUTING -s 172.17.0.0/16 -o eth2 -j MASQUERADEiptables -t nat -A PREROUTING -i eth2 -p tcp --dport 1234 -j DNAT --to 192.168.1.10:443 ip route replace default via 192.168.0.1ip route replace default equalize table jishu nexthop via 192.168.0.2 weight 1 \nexthop via 192.168.0.3 weight 1 \nexthop via 192.168.0.1 weight 1ip route replace 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.254 table jishuip route replace 192.168.0.0/24 dev eth2 proto kernel scope link src 192.168.0.254 table jishuip route replace 1.1.1.0/24 dev eth1 proto kernel scope link src 1.1.1.254 table jishu ip route replace 10.1.0.0/24 dev tap0 proto kernel scope link src 10.1.0.1 table jishu ip route replace 127.0.0.0/8 dev lo scope link table jishufor i in `ip rule list|awk '/1500/{print $3}'`;do ip rule del from $i table jishu;donefor i in 192.168.1.8 \192.168.1.239 \172.17.0.0/16 \192.168.1.127do ip rule add from $i table jishu pref 1500doneip route flush cache===================================================================nano -w /etc/conf.d/local.start //设置开机启动,在末尾加入一行/etc/init.d/gateway.shrc-update show //显示系统自动加载rc-update add iptables default //启动加载iptables6.3、IP tables 学习iptables -A FORWARD -s 192.168.1.164 -d 1.1.1.119 -p tcp -j DROP // 阻断TCP iptables -F FORWARD //清楚列表iptables -A FORWARD -d 192.168.1.163 -s 1.1.1.118 -j DROP // 阻断所有。
linux命令iptables的用法

Linux命令iptables的用法概述i p ta bl es是L in ux操作系统中的一个重要工具,它用于配置L in ux 内核中的网络过滤规则。
通过使用ip ta bl e s,我们可以控制网络数据包的流向和访问权限,实现网络安全的管理和控制。
本文将详细介绍i p ta bl es的用法和常见操作。
一、iptable s简介i p ta bl es是一个内核空间的防火墙工具,用于过滤、修改、传递数据包,提供网络安全的策略控制。
它基于N et fi lt er框架,能够实时监控网络数据包,并根据预先定义的规则进行处理。
ip ta bl es可以在L i nu x终端上运行,并可以通过配置文件持久化规则。
二、iptable s的基本用法1.查看当前i p t a bl e s规则要查看当前i pt ab le s规则,可以使用以下命令:i p ta bl es-L该命令将显示当前的i pt ab le s规则表和链的信息。
2.添加规则要添加一条i pt ab le s规则,可以使用以下命令:i p ta bl es-A<链名><匹配条件><动作>其中,`链名`表示ip t ab le s中的链,如I NP UT、O UT PU T、F OR WA RD 等;`匹配条件`用于对数据包进行匹配,如源I P、目标IP、协议等;`动作`表示对匹配的数据包采取的操作,如A CC EP T、DR OP等。
3.删除规则要删除一条i pt ab le s规则,可以使用以下命令:i p ta bl es-D<链名><规则序号>其中,`链名`表示要删除规则的链,`规则序号`表示要删除的规则在链中的位置。
4.修改规则要修改一条i pt ab le s规则,可以先删除旧规则,再添加新规则。
三、iptable s常用命令示例1.允许所有本地流量i p ta bl es-A IN PU T-i l o-jA CC EP T该命令允许所有本地流量通过IN PU T链。
iptables详解--转

iptables详解--转iptables详解基本概念:1.防⽕墙⼯作在主机边缘:对于进出本⽹络或者本主机的数据报⽂,根据事先设定好的检查规则对其检查,对形迹可疑的报⽂⼀律按照事先定义好的处理机制做出相应处理对linux⽽⾔tcp/ip协议栈是在内核当中,意味着报⽂的处理是在内核中处理的,也就是说防⽕墙必须在⼯作在内核中,防⽕墙必须在内核中完成tcp/ip报⽂所流进的位置,⽤规则去检查,才真正能⼯作起来。
iptables⽤来衡量tcp/ip报⽂的属性:源ip、⽬标ip、源端⼝、⽬标端⼝;tcp标志位: syn、syn+ack、ack、 fin、urg、psh、rst ;2.应⽤⽹关众多代理服务器都是应⽤⽹关,⽐如squid(使⽤acl限制应⽤层)varish这⼀类代理服务等。
3,⼊侵检测系统(IDS):·⽹络⼊侵检测系统 NIDS·主机⼊侵检测系统 HIDS对于IDS常⽤的检测服务有:snort等4.⼊侵防御系统(IPS),⽐如蜜罐部署⼀套⼊侵检测系统是⾮常⿇烦的,因为必须检测⽹络任意⼀个位置对于IPS常⽤的检测服务有: tripwire 等iptables基本概念对linux来说,是能够实现主机防⽕墙的功能组件,如果部署在⽹络边缘,那么既可以扮演⽹络防⽕墙的⾓⾊,⽽且是纯软件的⽹络数据⾛向:请求报⽂à⽹关à路由à应⽤程序(等待⽤户请求)à内核处理à路由à发送报⽂iptables规则功能表:filter主要和主机⾃⾝有关,主要负责防⽕墙功能过滤本机流⼊流出的数据包是默认使⽤的表;input :负责过滤所有⽬标地址是本机地址的数据包,就是过滤进⼊主机的数据包;forward :负责转发流经主机但不进⼊本机的数据包,和NAT关系很⼤;output :负责处理源地址的数据包,就是对本机发出的数据包;NAT表:负责⽹络地址转换,即来源于⽬的IP地址和端⼝的转换,⼀般⽤于共享上⽹或特殊端⼝的转换服务snat :地址转换dnat :标地址转换pnat :标端⼝转换mangle 表:将报⽂拆开来并修改报⽂标志位,最后封装起来5个检查点(内置链)·PREROUTING·INPUT·FORWORD·OUTPUT·POSTROUTING多条链整合起来叫做表,⽐如,在input这个链,既有magle的规则也可能有fileter的规则。
iptables用法和介绍

iptables⽤法和介绍参考视频:/video/BV12f4y1q73o?from=search&seid=11667345261719018642&spm_id_from=333.337.0.01.阿⾥云故障案例搭建keepalived推出havip,19年⽆法使⽤只能使⽤阿⾥云⾃⼰推出的slb负载均衡2.阿⾥云的iptables防⽕墙屏蔽/放⾏端⼝ IP 都可以正常使⽤ iptables共享上⽹端⼝转发/映射⽆法使⽤阿⾥云NAT⽹关,可以实现iptables共享上⽹端⼝转发/映射⽆法使⽤3.阿⾥云云盾故障导致⽤户使⽤什么命令,云盾就删除什么命令时刻备份好数据防⽕墙⼀些名词容器:存放东西表(table):存放链的容器链(chain):存放规则的容器规则(policy):准许或拒绝规则Netfilter 表(tables)链(chain)规则(policy)⼀栋楼楼⾥的房⼦房⼦⾥的柜⼦柜⼦⾥的⾐服,摆放规则⼀:iptables1.iptables⼯作流程1).防⽕墙是层层过滤的,实际是按照配置规则的顺序从上⽽下,从前到后进⾏过滤的2).如果匹配上规则,即明确表⽰是阻⽌还是通过,数据包就不再向下匹配新的规则3).如果规则中没有明确表明是阻⽌还是通过,也就是没有匹配规则,向下进⾏匹配,直到匹配默认规则得到明确的阻⽌还是通过4).防⽕墙的默认规则是所有规则执⾏完才执⾏的注意:屏蔽规则都是放在最上⾯2.表与链简介:iptables 是 4表五链4表: filter表 nat表 raw表 mangle表filter表:负责过滤功能,防⽕墙;内核模块:iptables_filternat表: network address translation,⽹络地址转换功能;内核模块:iptable_natmangle表拆解报⽂,做出修改,并重新封装的功能;iptable_mangleraw表:关闭nat表上启⽤的连接追踪机制;iptable_raw1)filter表防⽕墙:屏蔽或允许端⼝ IPfilter表强调:主要和主机⾃⾝有关,真正负责主机防⽕墙功能的(过滤流⼊流出的数据包) filter表⽰iptanles默认使⽤的表,这个表定义了三个链(chains)企业⼯作场景:主机防⽕墙INPUT 负责过滤所有⽬标地址是本机地址的数据包通俗来说:就是过滤主机的数据包FORWARD 负责转发流经主机的数据包,起转发的作⽤,和NAT关系很⼤ LVS NAT模式,net.ipv4.ip_forward=0OUTPU 处理所有源地址是本机地址的数据包通俗讲:就是处理从主机发出去的数据包2)nat表实现nat功能实现共享上⽹(内⽹服务器上外⽹)端⼝映射ip映射nat 负责⽹络地址转换的,即来源与⽬的IP地址和port的转换应⽤:和主机本⾝⽆关,⼀般⽤于局域⽹共享上⽹或者特殊的端⼝转换服务相关⼯作场景:1.⽤于企业路由(zebra)或⽹关(iptables),共享上⽹(POSTROUTING)2.做内部外部IP地址⼀对⼀映射(dmz),硬件防⽕墙映射IP到内部服务器,ftp服务(PREROUTING)3.WEB,单个端⼝的映射,直接映射80端⼝(PREROUTING)这个表定义了3个链,nat功能相当于⽹络的acl控制,和⽹络交换机acl类似OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的⽬的地址PREROUTING 在数据包到达防⽕墙时,进⾏路由判断之前执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等(端⼝转发)PORTROUTING 在数据包离开防⽕墙时,进⾏路由判断之后执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等⽣产应⽤:局域⽹共享上⽹查看是否加载iptables相关模块到内核[root@node1 ~]# lsmod | egrep 'filter|nat|ipt'iptable_filter 16384 1iptable_nat 16384 1nf_nat 40960 2 iptable_nat,xt_MASQUERADEnf_conntrack 147456 4 xt_conntrack,nf_nat,nf_conntrack_netlink,xt_MASQUERADEip_tables 28672 2 iptable_filter,iptable_natlibcrc32c 16384 3 nf_conntrack,nf_nat,xfs其中iptables_filter和iptables_nat为核⼼,缺少就⽆法使⽤[root@node1 ~]# systemctl stop firewalld[root@node1 ~]# systemctl disable firewalld然后开启iptables[root@node1 ~]# systemctl start iptables[root@node1 ~]# systemctl enable iptables[root@node1 ~]# iptables -nL 说明:-n是把服务名字转换为端⼝,-L是列出,iptables默认是filter表Chain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0ACCEPT all -- 0.0.0.0/0 0.0.0.0/0ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)target prot opt source destinationREJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destination3.iptables命令参数参数含义-L 显⽰表中的所有规则-n 不要把端⼝或ip反向解析为名字-t 指定表不指定默认为filter表-A append追加,加⼊准许类规则-D delete删除 -D INPUT 1-I insert拒绝类规则放在所有规则最上⾯拒绝类参数含义-p 协议protocal tcp/udp/icmp/all--dport ⽬标端⼝ dest destination 指定端⼝加上协议-p tcp--sport 源端⼝ source 源-s --source 源ip-d --destination ⽬标ip-m 指定模块 multiport(指定多个端⼝)-i input 输⼊的时候从哪个⽹卡进来-o ouput 输出的时候从那个⽹卡出去参数含义-j 满⾜条件后的动作:DROP/ACCEPT/REJECTDROP PEJECT 都是拒绝DROP 会把数据丢掉,不会返回信息给⽤户PEJECT 拒绝返回拒绝信息参数含义-F flush 清除所有规则,不会处理默认规则-X 删除⽤户⾃定义的链-Z 链的计数器清零(数据包计数器与数据包字节计数器)4.配置filter表规则正式配置之前先备份,再清空规则[root@node1 ~]# iptables -F 清除所有规则,不会处理默认规则[root@node1 ~]# iptables -X 删除⽤户⾃定义的链[root@node1 ~]# iptables -Z 链的计数器清零(数据包计数器与数据包字节计数器)[root@node1 ~]# iptables -nL 清空之后的样⼦,然后再进⾏配置Chain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination案例:禁⽌访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP说明:-A 后⾯写链名(追加,允许类规则⽤A) INPUT是链名 -p是添加tcp协议 --dport是⽬标端⼝ -j就是说明后⾯是允许还是拒绝-p 协议tcp/udp/icmp(ping命令拒绝访问)/all--dport ⽬标端⼝,指定端⼝加上协议 -p tcp--sport 源端⼝查看iptables表的顺序[root@node1 ~]# iptables -nL --line-number[root@node1 ~]# iptables -D INPUT 1说明:-D 后⾯写链名(删除类规则⽤D) 1是规则表的序号5.屏蔽某个ip[root@node1 ~]# iptables -I INPUT -s 192.168.20.22 -j DROP说明:-I -s 后⾯加IP 由于禁⽌的是IP所以不需要加端⼝[root@node1 ~]# iptables -nLChain INPUT (policy ACCEPT)target prot opt source destinationDROP all -- 192.168.20.22 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination[root@node1 ~]# iptables -D INPUT 1 删除规则表的禁⽌192.168.20.21的这⾏6.禁⽌某个⽹段连⼊(禁⽌192.168.20.0/24⽹段访问8888端⼝)iptables -I INPUT -s 192.168.20.0/24 -p tcp --dport 8888 -j DROP7.只允许某个⽹段连⼊(允许192.168.20.0⽹段)allow 192.168.20.0/24;deny all;⽅法1:利⽤!进⾏排除iptables -I INPUT ! -s 192.168.20.0/24 -j DROP⽅法2:修改链默认规则,修改为拒绝"添加准许"先配置好规则准许规则再修改默认规则[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:-A 后⾯写链名(追加,允许类规则⽤A)INPUT是链名 ACCEPT(允许的意思)意思是说:防⽕墙规则允许192.168.20.0⽹段访问然后再修改默认规则[root@node1 ~]# iptables -P INPUT DROP说明:-P是修改默认规则的参数,INPUT链内容就改为DROP[root@node1 ~]# iptables -nLChain INPUT (policy DROP)target prot opt source destinationACCEPT all -- 192.168.20.0/24 0.0.0.0/0ACCEPT all -- 192.168.10.0/24 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination8.匹配⽹络连接状态(TCP/IP连接状态)-m state --stateNEW:已经或将启动新的连接ESTABLISHED:已经建⽴的连接RELATED:正在启动的新连接INVALID:⾮法或⽆法识别的连接UNTRACKED:表⽰报⽂未被追踪,⽆法找到[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT9.拒绝多个端⼝访问[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 2222,12306 -j DROP说明:-m是指定模块 multiport是指定多个端⼝ 2222,12306是指两个端⼝[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 1024:2048 -j DROP说明:1024:2048是指从1024端⼝到2048端⼝都拒绝访问10.匹配ICMPICMP:控制报⽂协议 ping⼀般⽤于禁ping虽然被禁ping但不影响访问⽅法1):通过防⽕墙禁ping[root@node1 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP说明:--icmp-type 8 icmp有很多类型禁ping是第8个⽅法2):通过修改内核禁ping[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 临时修改[root@node1 ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 恢复修改将net.ipv4.icmp_echo_ignore_all=1 写⼊到/etc/sysctl.conf 永久修改然后输⼊[root@node1 ~]# sysclt -p 使其⽣效11.限制并发及速率-m limit 限制模块-m ;limt --limt 10/minute #每分钟只能有10个数据包,每秒6个-m ;limt --limt n/{second/minute/hour}说明:指定时间内的请求速率 'n'为速率,后⾯为时间分别为:秒分时-m limit --limit 10/minute --limit-burst 5 #每6秒释放⼯牌给别⼈使⽤--limit-burst[n]说明:在同⼀时间内允许通过的请求'n'为数字,不指定默认为5案例:[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT 先允许22端⼝[root@node1 ~]# iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP12.防⽕墙规则的保护与恢复iptables-save 默认输出到屏幕iptables-restore写⼊到/etc/sysconfig/iptables案例:iptables-save > /etc/sysconfig/iptables 保存到⽂件中iptables-restore < /etc/sysconfig/iptables 恢复防⽕墙策略filter表⼩结封IP 端⼝⽹段禁⽌ping限制速度和并发iptables filter表所有功能可以在云服务器中使⽤13.实际⽣产⽤法iptables 配置⽅式可以远程访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT[root@node1 ~]# iptables -A INPUT -p tcp -m multiport --dport 443,80 -j ACCEPT[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:这⾥还可以添加vpn⽹段例:172.16.1.0/241)设置允许本机lo 通讯规则允许本机回环lo接⼝数据流量流出与流⼊[root@node1 ~]# iptables -A INPUT -i lo -j ACCEPT[root@node1 ~]# iptables -I OUTPUT -o lo -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP[root@node1 ~]# iptables -P FORWARD DROP[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT⼆:nat1:1)共享上⽹[root@node1 ~]# iptables -t nat -A POSTROUTING -s 192.1683.20.0/24 -j SNAT --to-source 10.0.0.50(公⽹)说明:修改的是POSTROUTING(数据包离开防⽕墙时)链源地址为192.168.20.0/24 经过防⽕墙处理修改为10.0.0.50(公⽹)[root@node1 ~]# echo 'net.ipv4.icmp_echo_ignore_all = 0' >> /etc/sysctl.conf[root@node1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf2)端⼝映射/转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp --dport 9001 -j DNAT --to-destination 192.168.20.21:22 3)IP转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp -j DNAT --to-destination 192.168.20.212.nat故障排查1)先看⼀下防⽕墙规则iptables -t nat -nL2)ip⽹关配置查询⽹关ip r或者route -n3)内核转发是否配置在/etc/sysctl.conf⽂件中net.ipv4.ip_forward = 1echo '1' > /proc/sys/net/ipv4/ip_forward4)nat表总结实现共享上⽹(内⽹服务器上外⽹)端⼝转发/映射nat功能在云服务器上⽆法使⽤替代品叫:NAT⽹关三:总结1.禁⽌来⾃10.0.0.188 IP地址访问80端⼝请求iptables -I INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP2.如何使命令在执⾏的时候永久⽣效?iptables-save/etc/sysconfig/iptables3.实现把访问10.0.0.3:80的请求转到192.168.20.21:80iptables -t nat -A PREROUTING -d 10.0.0.3 -P tcp --dport 80 -j DNAT --to-destination 192.168.20.21:80 4.实现192.168.20.0/24段所有主机通过1xx.3x.5x.2xx外⽹IP共享上⽹iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j SNAT --to-destination 1xx.3x.5x.2xxiptables -t nat -A PORTROUTING -s 192.168.20.0/24 -j SNAT MASQUERADE。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.5 附加模块
2.2 链和表
£
表 filter: nat: 顾名思义,用于过滤的时候 顾名思义,用于做 NAT 的时候 NAT:Network Address Translator filter 表,匹配目的 IP 是本机的数据包 filter 表,匹配穿过本机的数据包, nat 表,用于修改目的地址(DNAT) nat 表,用于修改源地址 (SNAT)
注意: 1、--sport、--dport 必须联合 -p 使用,必须指明协议类型是什么 2、条件写的越多,匹配越细致,匹配范围越小
3.4 动作(处理方式)
ACCEPT £ DROP £ SNAT £ DNAT £ MASQUERADE
£
3.4.1 -j ACCEPT
-j ACCEPT 通过,允许数据包通过本链而不拦截它 类似 Cisco 中 ACL 里面的 permit 例如: iptables -A INPUT -j ACCEPT 允许所有访问本机 IP 的数据包通过
3.3.2 按来源目的地址匹配
-s <匹配来源地址> 可以是 IP、NET、DOMAIN,也可空(任何地址) 例如: -s 192.168.0.1 匹配来自 192.168.0.1 的数据包 -s 192.168.1.0/24 匹配来自 192.168.1.0/24 网络的数据包 -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 网络的数据包 匹配去往域名 的数据包 -d
3.2.6 -[vxn]L
-L [链名] LIST,列出规则 v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) n:只显示 IP 地址和端口号码,不显示域名和服务名称 例如: iptables -L 粗略列出 filter 表所有链及所有规则 iptables -t nat -vnL 用详细方式列出 nat 表所有链的所有规则,只显示 IP 地址和端口号 iptables -t nat -vxnL PREROUTING 用详细方式列出 nat 表 PREROUTING 链的所有规则以及详细数字,不反解
3.3 匹配条件
£
流入、流出接口(-i、-o) £ 来源、目的地址(-s、-d) £ 协议类型 (-p) £ 来源、目的端口(--sport、--dport)
3.3.1 按网络接口匹配
-i <匹配数据进入的网络接口> 例如: -i eth0 匹配是否从网络接口 eth0 进来 -i ppp0 匹配是否从网络接口 ppp0 进来 -o 匹配数据流出.2.3 -R
-R <链名> <规则号码> <具体规则内容> REPLACE,替换一条规则 例如: iptables -R INPUT 3 -j ACCEPT 将原来编号为 3 的规则内容替换为“-j ACCEPT” 注意: 确保规则号码 ≤ 已有规则数,否则报错
3.2.4 -P
-P <链名> <动作> POLICY,设置某个链的默认规则 例如: iptables -P INPUT DROP 设置 filter 表 INPUT 链的默认规则是 DROP 注意:
3.3.5 匹配应用举例
1、端口匹配 -p udp --dport 53 匹配网络中目的地址是 53 的 UDP 协议数据包 2、地址匹配 -s 10.1.0.0/24 -d 172.17.0.0/16 匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包 3、端口和地址联合匹配 -s 192.168.0.1 -d -p tcp --dport 80 匹配来自 192.168.0.1,去往 的 80 端口的 TCP 协议数据包
£
3.2.1 -A
-A <链名> APPEND,追加一条规则(放到最后) 例如: iptables -t filter -A INPUT -j DROP 在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则) 匹配所有访问本机 IP 的数据包,匹配到的丢弃
3.2.2 -I
-I <链名> [规则号码] INSERT,插入一条规则 例如: iptables -I INPUT -j DROP 在 filter 表的 INPUT 链里插入一条规则(插入成第 1 条) iptables -I INPUT 3 -j DROP 在 filter 表的 INPUT 链里插入一条规则(插入成第 3 条) 注意: 1、-t filter 可不写,不写则自动默认是 filter 表 2、-I 链名 [规则号码],如果不写规则号码,则默认是 1 3、确保规则号码 ≤ (已有规则数 + 1),否则报错
-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 链) 目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池 (一组连续的 IP 地址) 例如: iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 \ -j DNAT --to 192.168.0.1 把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1 iptables -t -j DNAT iptables -t -j DNAT nat -A PREROUTING -i ppp0 -p tcp --dport 81 \ --to 192.168.0.2:80 nat -A PREROUTING -i ppp0 -p tcp --dport 80 \ --to 192.168.0.1-192.168.0.10
£
链 INPUT: 位于 FORWARD: 位于 PREROUTING: 位于 POSTROUTING:位于
3.1 iptables 语法概述
£
iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]
3.2 命令概述
操作命令(-A、-I、-D、-R、-P、-F) £ 查看命令(-[vnx]L)
3.4.3 -j SNAT
-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链) 源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池 (一组连续的 IP 地址) 例如: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \ -j SNAT --to 1.1.1.1 将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \ -j SNAT --to 1.1.1.1-1.1.1.10 同上,只不过修改成一个地址池里的 IP
3.4.2 -j DROP
-j DROP 丢弃,阻止数据包通过本链而丢弃它 类似 Cisco 中 ACL 里的 deny 例如:
iptables -A FORWARD -s 192.168.80.39 -j DROP 阻止来源地址为 192.168.80.39 的数据包通过本机
3.4.4 -j DNAT
3.4.5 -j MASQUERADE
-j MASQUERADE 动态源地址转换(动态 IP 的情况下使用) 例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 将源地址是 192.168.0.0/24 的数据包进行地址伪装
ChinaUnix 讲座
2 小时玩转 iptables 企业版 cu.platinum@ 2006.03.18
最后修改时间:2006.07.23 最后修改时间:2006.07.23 文档维护者:白金(platinum)、陈绪(bjchenxu) 文档维护者:白金(platinum)、陈绪(bjchenxu)
--dport <匹配目的端口> 可以是个别端口,可以是端口范围 例如: --dport 80 匹配源端口是 80 的数据包 --dport 6000:8000 匹配源端口是 6000-8000 的数据包(含6000、8000) --dport :3000 匹配源端口是 3000 以下的数据包(含 3000) --dport 1000: 匹配源端口是 1000 以上的数据包(含 1000) 注意:--sport 和 --dport 必须配合 -p 参数使用
v1.5.2
主题大纲
1. 2. 3. 4. 5. 6. 7. 概述 框架图 语法 实例分析 网管策略 使用总则、FAQ 实战
1. 概述
2.4.x、2.6.x 内核 netfilter/iptables
2.1 框架图
-->PREROUTING-->[ROUTE]-->FORWARD-->POSTROUTING--> mangle | mangle ^ mangle nat | filter | nat | | | | v | INPUT OUTPUT | mangle ^ mangle | filter | nat v ------>local------->| filter
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理。 动作前面不能加 –j,这也是唯一一种匹配动作前面不加 –j 的情况。
3.2.5 -F