`

iptables 使用 快速教程

阅读更多

    linux的netfilter模块不仅可以拦截数据包,还可以转发数据包。iptables 是一个配置netfilter的工具。

原理

   整个原理可见下图。数据进入后,只有两条路可走,如果目的地址是本机,就由本机处理,不是则可以转发。

   

 

    PREROUTING,FORWARD,POSTROUNT,INPUT,OUTPUT 是netfilter提供的钩子,在这些钩子上,可以定义规则,对数据包进行处理。处理的种类包括:过滤(filter),转发(nat),数据包修改(mangle,raw)。netfilter把这些种分别放在四张表中:filter,nat,mangle,raw。在这些表中放入了各种规则。iptables就是对这些内容进行配置。

 

命令格式

   

#iptables 目的 操作 规则

  目的是由两个组成:钩子和表 ,

    指定表是由 -t 指定 ,-t 后可跟 nat,filter,mangle,raw

    表则直接跟在 操作 后面。可先INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

 

    操作则包括 增(-A)删(-D)改(-R)查(-L)插入(-L)清除(-F)默认结果(-P)自定义分组(-N)

 

    规则则由两部分组成:检测规则与结果 

    检查规则包括 源地址(-s),目标地址(-d) ,进入的网卡(-i),出去的网卡(-o),协议 (-p),端口(--dport)

    结果则是对数据包的操作:-j ACCEPT | REJECT | DROP |SNAT |DNAT |MASQUERADE

    考虑到检查与结果的复杂性,netfilter 还有许多插件 ,插件可以对检查规则和操作进行扩展定义。

    插件由 -m 指定,关于各种扩展,可查看手册 

 

man 5 iptables-extensions

    举例:

iptables -t nat -I POSTROUTING -s 192.168.135.0/24 -j SNAT --to 192.168.137.77
#就是说 在 POSTROUTING的勾子上,进行nat操作,源地址是192.168.135.0/24 的,就修改源地址成
192.168.137.77

   

启用

 

yum install -y iptables-services
systemctl enable iptables.service

#如果有firewalld ,关闭
systemctl stop firewalld
systemctl disable firewalld

   

 

查看规则

 

iptables -vnL

保存规则

默认设置下,iptables 进行改动后,并不会主动保存,下次开机会丢失,所以要手工保存。

/usr/libexec/iptables/iptables.init save

 如果的想自动保存,则要在关机脚本里进行触发保存,用systemd 管理下,修改/etc/sysconfig/iptables-config

IPTABLES_SAVE_ON_STOP="yes"

 

 

基本配置

#屏蔽所有请求
iptable -A INPUT -j REJECT

#允许127.0.0.1可访问,因为netfilter默认是对物理网口起效,所以要对本机回环加规则
iptables -I INPUT -d lo -j ACCEPT

#允许本机可ping
iptables -I INPUT -p icmp -j ACCEPT

#允许本机对外访问任何地址与端口,由于本机主动向外请求时,目的IP与端口都不可预测,
#所以,不能按目的信息过滤。但本机主动发起请求的包,有个特征是状态是RELADTED,ESTABLISHED
iptables -I INPUT -m state --state RELAED,ESTABLISHED -j ACCEPT

#开放SSH
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

 

FTP

  

#FTP的登录端口是21
iptables -I INPUT -t tcp -dport 21 -j ACCEPT

#如果客户端采用主动模式 passive on ,需要FTP服务器主动从20端口向客户端指定的端口连接,
#所以需要保证下面一条存在
iptables -I INPUT -m state --state RELAED,ESTABLISHED -j ACCEPT

#如果客户端采用被动模式,FTP服务器需要开放随机的端口给客户端,由于端口是随机的,所以不能
#指定单一的端口。有两种办法
# 1. 指定的端口范围,比如50000-60000之间,需要FTP的配置文件中指定,同时在iptables中开放
#   这些端口
#    ftp配置文件/etc/vsftpd/vsftpd.conf中加入
#    pasv_min_port=50000
#    pasv_max_port=60000

iptables -I INPUT -tcp --dport 50000:60000 -j ACCEPT

# 2. 更简单的办法是用 iptables的模块,nf_conntrack_ftp
#在/etc/sysconfig/iptables-config 中加入配置:
#IPTABLES_MODULES="nf_conntrack_ftp" 

 

NAT

    若让内网中的电脑能够与外网通讯,其中一种技术是NAT。

#两台机器,A机器网址是内网eth0: 192.168.135.20/24 ,
#另一台B机器有两块网卡,分别是内网eth1: 192.168.135.10/24,  eth0:外网 192.168.137.77/24
在A机器上配置/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
IPADDR=192.168.135.20
NETMASK=255.255.255.0
GATEWAY=192.168.135.10
DNS1=192.168.137.1

NAT是一种数据转发,所以B机器需要打开转发开关

sysctl -w net.ipv4.ip_forward=1

 

 

内网机器需要访问外网资源,需要做SNAT 或者 MASQUERADE。推荐使用MASQUERADE方式,这样可避免外网网卡的地址变化

#在B机器上SNAT
 iptables -t nat -I POSTROUTING -s 192.168.135.0/24 -j SNAT --to 192.168.137.77
#在B机器上MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.135.20 -o eth0 -j MASQUERADE
 

外网需要访问内网上的资源,比如A机器的80端口,要做DNAT

iptables -t nat -I PREROUTING -d 192.168.137.77 -p tcp --dport=8080 -j DNAT --to 192.168.135.20:80
  
 
 
 
  • 大小: 45.3 KB
分享到:
评论

相关推荐

    linux iptables 防火墙快速入门教程

    该演示ppt详细讲解了如何正确配置linux中iptables防火墙及附有一有实例讲解.让初学者更易掌握iptables的应用.

    iptables教程与范例

    iptables教程与范例,希望给需要的人快速的学习。

    Linux实战-2小时玩转iptables

    在《Linux实战—2小时玩转iptables》这篇文档中,作者旨在通过一系列简洁明了的教程帮助读者快速掌握iptables的基本用法及其在网络管理中的应用。iptables是Linux系统中一个非常重要的工具,它基于内核的`netfilter`...

    两小时玩iptables

    在这个“两小时玩iptables”的教程中,我们将深入理解iptables的基本概念、主要功能和使用方法。 首先,iptables是基于Netfilter框架的,Netfilter在Linux内核中构建了一个钩子系统,允许iptables在数据包经过网络...

    iptables详解

    iptables是Linux下强大的防火墙,但是配置有些麻烦,本次元详细讲解iptables的配置,能让你快速入门iptables

    squid+iptables透明代理配置詳解

    - 使用 `iptables-save > /etc/sysconfig/iptables` 保存规则,确保重启后规则依然生效。 #### 五、用户分类与访问控制 - **高级用户**: 通过MAC地址自动识别,无需认证即可访问网络。 - **普通用户**: 需要经过...

    Linux基础教程linux配置防火墙详细步骤终版.pdf

    本教程将指导读者如何配置一个 filter 表的防火墙,包括查看 IPTABLES 设置情况、清除原有规则、配置防火墙规则、保存防火墙规则等步骤。 一、查看 IPTABLES 设置情况 在配置防火墙之前,需要查看 IPTABLES 的设置...

    Linux快速教程

    这份"Linux快速教程"旨在帮助新手快速掌握Linux基础,理解其工作原理,并能进行基本的系统管理和操作。 Linux的核心是一个操作系统内核,它管理硬件资源,提供服务供应用程序使用。Linux的桌面环境如GNOME、KDE、...

    Hadoop平台相关软件快速搭建教程

    ### Hadoop平台相关软件快速搭建教程 #### 一、引言 随着大数据技术的发展,Hadoop已成为处理大规模数据集的核心工具之一。为了更好地利用Hadoop进行数据处理,往往还需要配合其他一系列工具,如Hive、Sqoop、Spark...

    Linux实用培训学习教程

    本"Linux实用培训学习教程"旨在帮助初学者快速入门,同时也为有一定经验的用户提供了深入的技巧和知识。 教程内容可能包括以下几个方面: 1. **Linux基础知识**:介绍Linux的发展历史、发行版分类,如Ubuntu、...

    linux简明教程.rar

    本教程旨在帮助用户快速掌握Linux的基本操作和管理技巧。 在Linux世界中,命令行是主要的交互方式,因此学习基本的命令是入门的第一步。例如,`ls`用于列出目录内容,`cd`用于切换目录,`mkdir`创建新目录,`touch`...

    Linux 基础教程

    这份教程涵盖了Linux的安装、基本使用以及系统管理等多个方面,旨在帮助用户快速上手并熟练掌握Linux操作环境。 首先,关于Linux的安装,教程会详细讲解如何选择合适的Linux发行版,如Ubuntu、CentOS或Fedora等,并...

    linux教程-适合入门

    总之,这个“Linux教程——适合入门”涵盖了从安装到日常使用的方方面面,旨在帮助初学者快速建立起对Linux系统的基本理解和操作技能。通过深入学习和实践,你将能够自信地驾驭这个强大的开源操作系统,并为更高级的...

    Ubuntu Linux实用学习教程.7z

    本教程将带你深入了解Ubuntu的世界,让你从新手快速成长为熟练的Linux用户。 1. **系统安装与更新**:学习如何下载Ubuntu ISO镜像,创建启动U盘,然后通过BIOS设置进行安装。了解如何配置分区,选择合适的安装类型...

    linux搭建CS服务器教程要点.pdf

    * 提高玩家客户端下载 CS 服务器资源速度的方法:让玩家客户端快速下载 CS 服务器资源 七、前期准备 * Linux 操作系统的服务器 * 网卡配置一个固定的局域网 IP 地址 * 物理连接在局域网网络 * 路由器映射一个物理 ...

    linux入门教程PDF

    Linux入门教程PDF版是针对初学者设计的一份详尽指南,旨在帮助新手快速掌握Linux操作系统的基础知识和常用命令。Linux是一种自由开源的操作系统,它的开放性、稳定性和安全性使其在服务器领域尤其受欢迎,并逐渐被...

    LINUX 电子教程 基础入门

    这份"Linux基础入门"电子教程针对初学者,旨在帮助他们快速理解和掌握Linux操作系统的基本概念、命令行操作以及系统管理技能。 1. **Linux简介** - 开源与自由:Linux是基于Unix的开源操作系统,其源代码可供任何...

    pinpoint详细安装部署教程及使用手册.docx

    Pinpoint详细安装部署教程及使用手册 Pinpoint是开源在github上的一款APM(Application Performance Management/应用性能管理)工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3...

    快速抓无客户端的握手包

    文件名称“快速抓无客户端的握手包.doc”可能包含了详细的操作步骤和教程,包括如何设置网络环境,选择合适的工具,以及如何解析和分析捕获到的数据包。这可能涵盖了一些高级技巧,比如使用伪造的IP地址进行MITM...

Global site tag (gtag.js) - Google Analytics