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的应用.
在这篇教程之后,你将能理解到防火墙内在过滤机制,同时也能自己动手创建符合自己要求的防火墙。 1、iptables介绍 iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤...
LINUX教程之24-iptables防火墙简单使用
iptables使用指南iptables使用指南
主题大纲 1. 概述 2. 框架图 3. 语法 4. 实例分析 5. 网管策略 6. FAQ 7. 实战
iptables 高级使用研讨
第一章序言部分除了第三...第五章和第六章是iptables命令使用方法的详细介绍。 第七章与第八章是实例讲解,对我们编写自己的规则很有指导意义的,强烈建议你看一看。 附录里有一些资源链接是很好的,相信你一定会喜欢。
Linux 防火墙软件 IPtables使用详解.docx
Android iptables 使用及源码分析
iptables 使用指南 内容比较详细
介绍iptables编译,安装,启动以及iptables的工作原理,以及一些编写规则和范例
Iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则。如果找不到,iptables将对其采取默认操作。几乎所有的Linux发行...
使用iptables限制流量请求,使用iptables限制流量请求,使用iptables限制流量请求
iptables源码 iptables工具
iptables常用命令和使用 很好的处级教程
iptables 防火墙 linux
轻松玩转iptables-iptables讲义(CU白金) 说的很详细的iptables
CentOS 安装使用Iptables,1.安装iptables-services2.设置开机启动3.配置说明
iptables教程与范例,希望给需要的人快速的学习。