Linux日常维护(filter的一个小案例,filter的nat表应用)

简介:

一个iptables的小案例。

写一个脚本,并执行它。

在编辑之前可以先看iptables的规则,和之后会有对比

[root@litongyao ~]# iptables -nvL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


[root@litongyao ~]# vim /usr/local/sbin/iptables.sh

ipt="/usr/sbin/iptables"                            (定义一个全局变量)

$ipt -F                                        (计数器清零)

$ipt -P INPUT DROP                                 (把进来的数据包链DROP掉)

$ipt -P OUTPUT ACCEPT                                (本机的数据包可以出去)

$ipt -P FORWARD ACCEPT                                (目标不是本机地址的可以通行)

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (指定状态,RELATED和ESTABLISHED是要同时存在的,详细见下)

$ipt -A INPUT -s 192.168.52.0/24 -p tcp --dport 22 -j ACCEPT (指定只要源地址是这个网段的ip都可以远程连接ssh)

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT             (开放本机的80端口)HTTP服务

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT              (开放本机21端口)FTP服务


[root@litongyao ~]# sh /usr/local/sbin/iptables.sh      sh执行这个命令

再来看看iptables的规则:

[root@litongyao ~]# iptables -nvL        

Chain INPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in    out   source     destination         

   64  4472 ACCEPT     all  --  *   *   0.0.0.0/0      0.0.0.0/0      state RELATED,ESTABLISHED

    0     0 ACCEPT     tcp  --  *   *  192.168.52.0/24   0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *   *    0.0.0.0/0        0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *   *   0.0.0.0/0        0.0.0.0/0            tcp dpt:21


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 37 packets, 3556 bytes)

 pkts bytes target     prot opt in     out     source               destination         

可以看到我们写的脚本都被加入了规则里,这里注意的是,没有运行service iptables save,就不会保存规则,重启即可恢复


实验:关于icmp的小案例   (在开始这个小案例之前,需要把上一条规则恢复默认,既重启服务)

[root@litongyao ~]# service iptables restart

下面执行一条命令:

[root@litongyao ~]#  iptables -I INPUT -p icmp --icmp-type 8 -j DROP

我们ping外网,发现没有问题,可以ping通,用别的主机ping自己的时候,却发现ping不通了

1.png

2.png

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。



Iptables的四种状态:

NEW
NEW说明这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接的第一个包,它即将被匹配了。比如,我们看到一个SYN 包,是我们所留意的连接的第一个包,就要匹配它。

ESTABLISHED
ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要它们是我们所发出的信息的应答。

RELATED
RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是 RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP-data 连接就是和FTP-control有关联的,如果没有在iptables的策略中配置RELATED状态,FTP-data的连接是无法正确建立的,还有其他的例子,比如,通过IRC的DCC连接。有了这个状态,ICMP应答、FTP传输、DCC等才能穿过防火墙正常工作。注意,大部分还有一些UDP协议都依赖这个机制。这些协议是很复杂的,它们把连接信息放在数据包里,并且要求这些信息能被正确理解。


INVALID
INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西,因为防火墙认为这是不安全的东西





nat表的两个应用

  1. 1A机器有两个网卡。一个外网网卡。一个内网网卡。B机器有一个网卡,只有一个内网网卡。需求:B机器可以上网(路由器)

准备工作:

1.给litongyao虚拟机增加一块内网网卡,并设置为LAN区段,(如果没有LAN区段。则需要增加一个区段。)

2.给内网网卡设置一个IP和网段。

[root@litongyao ~]# ifconfig ens37 192.168.100.100/24    

(这种方法设置的ip是临时性的,重启后就会失效。可以复制ens33的配置文件改名为ens37,并修改里面的配置)

3.给xuniji的内网网卡设置一个ip。(因为没有外网网卡。所以不能远程登录连接)

[root@xuniji ~]# ifconfig ens33 192.168.100.50/24 

4.检查

用一台去Ping另外一台机器,如果Ping通,则准备工作完成


实验:

  1. 打开A机器端口转发,并更改防火墙设置

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。

[root@litongyao ~]# cat /proc/sys/net/ipv4/ip_forward   (默认是0,则表示端口转功能关闭)

0

[root@litongyao ~]# echo "1" > /proc/sys/net/ipv4/ip_forward        (打开端口转发功能,将0修改成1)

[root@litongyao ~]# cat /proc/sys/net/ipv4/ip_forward

1


[root@litongyao ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE      

2.设置B机器的网关

[root@litongyao ~]# route -n                         (查看网关的命令)

[root@litongyao ~]# route add default gw 192.168.100.1        (增加一个192.168.100.1的网关)



2.C机器只能和A机器通信,让C机器可以连通B机器的22端口(端口映射)

工作:

  1. A机器上打开端口转发

[root@litongyao ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

2.A机器上更改防火墙配置 (最好恢复默认的配置,以免出现偏差)

[root@litongyao ~]# iptables -t nat -A PREROUTING -d 192.168.52.100 -p tcp --dport 1122 -j DNAT --to 192.168.100.50:22

[root@litongyao ~]# iptables -t nat -A POSTROUTING -s 192.168.100.50 -j SNAT --to 192.168.52.100

3.B机器上设置网关

实验:用xshell试着连接192.168.52.100:1122,看是否能映射到B机器的192.168.100.50











本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2046196,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
5月前
|
运维 监控 Java
Linux常用命令行大全:14个核心指令详解+实战案例
在服务器管理与开发运维领域,Linux 指令是构建技术能力体系的基石。无论是日常的系统监控、文件操作,还是复杂的服务部署与故障排查,熟练掌握指令的使用逻辑都是提升工作效率的核心前提。然而,对于初学者而言,Linux 指令体系往往呈现出“参数繁多易混淆”“组合使用门槛高”“实际场景适配难”等痛点——例如 ls 命令的 -l 与 -a 参数如何搭配查看隐藏文件详情,grep 与管道符结合时如何精准过滤日志内容,这些问题常常成为技术进阶的阻碍。
|
11月前
|
Linux
linux常用命令详细说明以及案例
本文介绍了Linux中几个常用的命令及其用法,包括:`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm -p`(删除目录及内容)和`mv`(移动或重命名文件/目录)。每个命令都配有详细说明、语法格式、常见选项及实用案例,帮助用户更好地理解和使用这些基础命令。内容源自[linux常用命令详细说明以及案例](https://linux.ciilii.com/show/news-285.html)。
447 159
|
11月前
|
Linux
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
683 157
|
7月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
494 10
|
7月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
745 13
|
6月前
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
9月前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
12月前
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
689 5
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
296 5