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
相关推荐
该演示ppt详细讲解了如何正确配置linux中iptables防火墙及附有一有实例讲解.让初学者更易掌握iptables的应用.
iptables教程与范例,希望给需要的人快速的学习。
在《Linux实战—2小时玩转iptables》这篇文档中,作者旨在通过一系列简洁明了的教程帮助读者快速掌握iptables的基本用法及其在网络管理中的应用。iptables是Linux系统中一个非常重要的工具,它基于内核的`netfilter`...
在这个“两小时玩iptables”的教程中,我们将深入理解iptables的基本概念、主要功能和使用方法。 首先,iptables是基于Netfilter框架的,Netfilter在Linux内核中构建了一个钩子系统,允许iptables在数据包经过网络...
iptables是Linux下强大的防火墙,但是配置有些麻烦,本次元详细讲解iptables的配置,能让你快速入门iptables
- 使用 `iptables-save > /etc/sysconfig/iptables` 保存规则,确保重启后规则依然生效。 #### 五、用户分类与访问控制 - **高级用户**: 通过MAC地址自动识别,无需认证即可访问网络。 - **普通用户**: 需要经过...
本教程将指导读者如何配置一个 filter 表的防火墙,包括查看 IPTABLES 设置情况、清除原有规则、配置防火墙规则、保存防火墙规则等步骤。 一、查看 IPTABLES 设置情况 在配置防火墙之前,需要查看 IPTABLES 的设置...
这份"Linux快速教程"旨在帮助新手快速掌握Linux基础,理解其工作原理,并能进行基本的系统管理和操作。 Linux的核心是一个操作系统内核,它管理硬件资源,提供服务供应用程序使用。Linux的桌面环境如GNOME、KDE、...
### Hadoop平台相关软件快速搭建教程 #### 一、引言 随着大数据技术的发展,Hadoop已成为处理大规模数据集的核心工具之一。为了更好地利用Hadoop进行数据处理,往往还需要配合其他一系列工具,如Hive、Sqoop、Spark...
本"Linux实用培训学习教程"旨在帮助初学者快速入门,同时也为有一定经验的用户提供了深入的技巧和知识。 教程内容可能包括以下几个方面: 1. **Linux基础知识**:介绍Linux的发展历史、发行版分类,如Ubuntu、...
本教程旨在帮助用户快速掌握Linux的基本操作和管理技巧。 在Linux世界中,命令行是主要的交互方式,因此学习基本的命令是入门的第一步。例如,`ls`用于列出目录内容,`cd`用于切换目录,`mkdir`创建新目录,`touch`...
这份教程涵盖了Linux的安装、基本使用以及系统管理等多个方面,旨在帮助用户快速上手并熟练掌握Linux操作环境。 首先,关于Linux的安装,教程会详细讲解如何选择合适的Linux发行版,如Ubuntu、CentOS或Fedora等,并...
总之,这个“Linux教程——适合入门”涵盖了从安装到日常使用的方方面面,旨在帮助初学者快速建立起对Linux系统的基本理解和操作技能。通过深入学习和实践,你将能够自信地驾驭这个强大的开源操作系统,并为更高级的...
本教程将带你深入了解Ubuntu的世界,让你从新手快速成长为熟练的Linux用户。 1. **系统安装与更新**:学习如何下载Ubuntu ISO镜像,创建启动U盘,然后通过BIOS设置进行安装。了解如何配置分区,选择合适的安装类型...
* 提高玩家客户端下载 CS 服务器资源速度的方法:让玩家客户端快速下载 CS 服务器资源 七、前期准备 * Linux 操作系统的服务器 * 网卡配置一个固定的局域网 IP 地址 * 物理连接在局域网网络 * 路由器映射一个物理 ...
Linux入门教程PDF版是针对初学者设计的一份详尽指南,旨在帮助新手快速掌握Linux操作系统的基础知识和常用命令。Linux是一种自由开源的操作系统,它的开放性、稳定性和安全性使其在服务器领域尤其受欢迎,并逐渐被...
这份"Linux基础入门"电子教程针对初学者,旨在帮助他们快速理解和掌握Linux操作系统的基本概念、命令行操作以及系统管理技能。 1. **Linux简介** - 开源与自由:Linux是基于Unix的开源操作系统,其源代码可供任何...
Pinpoint详细安装部署教程及使用手册 Pinpoint是开源在github上的一款APM(Application Performance Management/应用性能管理)工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3...
文件名称“快速抓无客户端的握手包.doc”可能包含了详细的操作步骤和教程,包括如何设置网络环境,选择合适的工具,以及如何解析和分析捕获到的数据包。这可能涵盖了一些高级技巧,比如使用伪造的IP地址进行MITM...