linux初学者-iptables篇

linux初学者-iptables篇

iptables是防火墙的一种,是用来设置、维护和检查linux内核的IP过滤规则的,可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables包含3张表和5条链。3张表分别是:filter、mangle、nat。5条链分别是:INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING。

3张表分别代表:

filter:  一般的过滤功能

mangle:  用于对特定数据包的修改

nat   :  用于nat功能(端口映射,地址映射等)

现阶段还加入了raw表,一般是为了不再让iptables做数据包的连接跟踪处理,提高性能。

5条链分别代表:

INPUT       :通过路由表后,目的地为本机

FORWARD     :通过路由表后,目的地不为本机

OUTPUT      :由本机产生,向外转发

PREROUTING  :数据包进入路由表之前

POSTROUTING :发送到网卡接口之前

1、iptables的基本命令和设置

"iptables -t filter -nL"。查看filter表的信息。如下图所示,可以看到filter表中包含了哪几条链,各有什么策略。同理也可以看到其他表的。

"iptables -t filter -F"。清空这个表里面的全部策略,这只是临时清空,在重启iptables后还会出现,所以还需要输入命令"service iptables save"来保存。

"iptables -t filter -P INPUT ACCEPT|DROP"。改变filter表中改变INPUT模式,ACCEPT接受,DROP表示丢弃数据包。例如设置成DROP以后,其他主机无法通过ssh服务连接这台主机。

"iptables -t filter -A INPUT -j REJECT"。"-A"表示在最后添加一个策略,该策略是拒绝所有数据。如下图所示,client主机无法连接,请求被拒绝。

"iptables -t filter -I INPUT 1 -i lo -j ACCEPT"。"-I"表示插入,插在后面数字之前,该策略表示本机的数据可以通过,如下图所示,本机可以通过ssh连接本机,但是其他主机不行。

"iptables -t filter -I INPUT 2 -s 172.25.254.102 -p tcp --dport 22 -j ACCEPT"。这条策略表示,172.25.254.102的主机的数据可以通过本机的22号端口,22号端口是sshd服务的端口。

"iptables -t filter -I INPUT 3 -p tcp --dport 80 -j ACCEPT"。这条策略表示80号端口的数据都可以通过。

"iptables -t filter -D INPUT 3"。删除第3条策略。

"iptables -t filter -D INPUNT -p tcp --dport 80 -j ACCEPT"。也可以通过后面的条件来删除策略。

"iptables -t filter -R INPUT 2 -s 172.25.254.102 -p tcp --dport 22 -j REJECT"。"-R"表示改变策略,将之前设置的策略中的"ACCEPT"改为"REJECT"。

"iptables -t filter -N WE"。添加一个"WE"链。

"iptables -t filter -E WE REDHAT"。改变自定义链的名称,需注意,只有自定义链可以改变名称。

"iptables -x REDHAT"。删除自定义的链。

2、策略举例

数据包进入后读取策略是从上到下逐条读取,如果有很多的策略,一个数据包再次进入显然会因为读取策略占用较长的时间,所以可以设置策略,数据包第一次进入需要读取是否允许进入的策略,再次进入则直接通过。以此为例简要介绍策略应用。

如下图所示,因为策略读取是逐条的,所以将再次进入的策略写在第一个可以大大缩短读取时间。第一条输入"iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT",这条策略表示再次进入的数据包直接通过。然后添加"iptables -t filter -A INPUT -m state --state NEW -i lo -j ACCEPT",该条策略表示本机的数据都可以直接通过。在后面就可以添加图中所示的首次进入的数据包的各种策略了。

这就是策略的一个简单的应用。

但是,需要注意的是,在设置的策略中,ftp的策略是特殊的,因为ftp的被动模式在连接时会随机开启一个大于1024的端口,端口不固定,所以策略也有所不同。

具体步骤如下:

编辑ftp的配置文件"/etc/vsftpd/vsftpd.conf",在其中输入"pasv_max_port=1025"和"pasv_min_port=1025",即将端口固定在1025上,也可以是大于1024的其他端口。重启服务后输入"iptables -t filter -I INPUT 3 -p tcp --dport 1025 -j ACCEPT"添加通过这个端口的策略。完成配置后就可以使用ftp了。

3、路由策略

现有3台主机,分别是一台有两个卡的主机server,IP分别为"172.25.254.202"、"172.25.2.202",一台client的主机IP为"172.25.2.102",网关是"172.25.2.202",一台主机的IP为"172.25.254.2"。

"2"网段的client主机现在想通过ssh连接"254"网段的主机,在不做任何配置的情况下,这是不可能的。先在可以以server主机为路由器,配置iptablse,使得可以实现。

在server主机上的配置如下:

a、"sysctl -a | grep forward"。通过这个命令查看内核路由功能"net.ipv4.ip_forward"是否开启,0为关闭,1为开启。

b、"vim  /etc/sysctl.conf"。如果没有开启,编辑这个文件,在其中写入"net.ipv4.ip_forward = 1"。完成后输入"sysctl -p"加载。

c、"iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.102"。添加策略,使得所有通过eth0网卡的数据包封装为"172.25.254.102"的数据包。

完成上述策略后,"2"网段的client主机就可以连接到"172.25.254.2"的主机了。

但是,因为数据包是封装过的,在"172.25.254.2"的主机上只能看到连接的是"172.25.254.202"的主机,并不知道有client主机的存在。这时候可以在server主机上加入策略,使得"172.25.254.2"的主机连接看到的IP时,直接连到"2"网段的主机client上。使得server主机完成路由的功能。

在server主机上加入策略"iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.2.102"。加入后"172.25.254.2"的主机连接server主机就会自动连接到"2"网段的client主机上了。

以上只是iptables的一些命令和应用,如果读者有兴趣也可以研究。

原文地址:https://www.cnblogs.com/davidshen/p/8146000.html

时间: 2024-11-09 07:36:09

linux初学者-iptables篇的相关文章

linux初学者-ftp篇(一)

linux初学者-ftp篇(一) FTP是文件传输协议,是用于Internet上的控制文件的双向传输.用户可以通过客户机程序从远程主机上下载或者向远程主机上传文件. linux系统中,如果不了解SELINUX,需要将SELINUX下的enforing改为disabled,否则在进行上传或者下载时会有影响. 1.vsftpd服务的安装 在有yum源的前提下,输入"yum install vsftpd.x86_64 lftp.x86_64 -y"安装vsftpd服务,"vsftp

linux初学者-iscsi篇

linux初学者-iscsi篇 之前介绍过网络文件共享系统NFS和CIFS.在系统中,设备也是可以共享的,这就是iSCSI,它可以用来建立和管理IP存储设备.主机和客户机等之间的相互连接.下文将简要介绍这种网络设备共享系统.       1.安装 因为iSCSI是设备共享系统,所以在进行操作之间,需要先有一个硬盘设备.本文中是使用"fdisk /dev/vdb"来新建一个分区设备"/dev/vdb1"来作为共享设备. "yum install target

linux初学者-磁盘阵列篇

linux初学者-磁盘阵列篇 在磁盘的使用中,有时候需要提高磁盘的读写数据速度,就要用到磁盘组--raid,也就是磁盘阵列. 磁盘阵列是由最少两块以上的磁盘组成的,raid有许多模式,在这里将介绍其中常用的模式raid0.raid1和raid5. raid0:raid0是用来提高读取数据速度的,其用两块以上的磁盘组成,是将数据同时记录在这几个磁盘中,在使用时,几块磁盘各读取一部分数据.这种磁盘组因为需要存入的数据完全相同,所以容量和一块磁盘的容量大小相同,但是读取速度会变快. raid1:rai

linux初学者-mail篇

linux初学者-mail篇 邮件是在生活中比较常用的一个工具,在linux系统中的邮件也是.在linux中,邮件的发送所用的服务时postfix,邮件的接收所用的服务是pop(110端口).imap(143端口),所用软件为dovecot.下文将对两台主机进行配置,实现邮件的首发,并对邮件进行管理. 为了演示方便,将这两台主机的主机名分别设为"mailqq.qq.com"."mail163.163.com". 1.域名配置 在"mailqq.qq.com

linux初学者-Apache篇

linux初学者-Apache篇 Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述.        1.安装 "yum install httpd -y".安装httpd服务. "systemctl start httpd"."systemctl enable httpd"."systemctl stop firewalld".对httpd

linux初学者-CIFS网络文件系统篇

linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统. 提供CIFS的服务是SAMBA,下文将介绍SAMBA服务的一些配置以及用法. 1.SAMBA的安装和配置 "yum install samba samba-common samba-client -y".安装SAMBA服务. "systemctl start

linux初学者-DNS配置篇

linux初学者-DNS配置篇 DNS在之前的网络管理篇已经做过介绍,下文将叙述DNS在学习工作中的一些配置以及应用. 1.高速缓存DNS 一台主机通过DNS服务器询问域名解析IP是需要一定的时间的,如果再次询问这个域名,同样需要之前的时间,这无疑延长了解析时间以及增加了服务器的负担,如果DNS服务器能够记住并且分享询问过的域名,那么其他主机在询问这个域名时就会快很多.这就是高速缓存DNS. 配置高速缓存,需要在DNS服务器上做如下配置: a."yum install bind -y"

linux初学者-网络桥接篇

linux初学者-网络桥接篇 在网络的使用中,有时需要搭建网络桥来实现网络桥接.例如在一台主机上制作一台虚拟机,虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机的内核来处理这些问题,这无疑增加了主机内核的负担,也延长了虚拟机的反应速度,如果搭建网络桥,使得虚拟机的内核可以在一定程度上使用主机的物理网卡,就可以解决这个问题. 搭建网络桥可以通过编辑配置文件和命令管理来实现. 1.编辑配置文件 如下图所示,主机的物理网卡为"enp0s25",IP为&q

linux初学者-系统启动故障篇

linux初学者-系统启动故障篇 在系统的操作中,有时会不小心误删或者操作失误使得系统启动不起来,下文将列举几种常见的系统启动失败的情况及解决的办法. 1.删除或者覆盖mbr的446个字节 mbr的446个字节指定了系统启动时/boot分区在磁盘中的为至,所以mbr这446个字节如果被删除或者被覆盖,就会导致系统找不到/boot分区而开不了机. 例如下图,用"dd if=/dev/zero of=/dev/vda bs=446 count=1"覆盖掉前446个字节.重启系统发现无法启动