iptables实战案例

news2025/6/6 21:58:09

目录

一、实验拓扑

二、网络规划

三、实验要求

四、环境准备

1.firewall

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

(2)打开firewall路由转发

2.PC1(内网)

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

3.PC2外网

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

4.服务器

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

(3)下载nginx,并开通服务

5.环境检测

(1)内网连接

(2)外网连接

五、防火墙配置及测试


一、实验拓扑

二、网络规划

内部PC1位于内网区域,地址段为: 192.168.1.0/24,pc1地址为:192.168.1.1/24,网关地址为:192.168.1.254/24

服务器S1位于服务器区域,地址段为: 192.168.2.0/24,s1地址为:192.168.2.1/24,网关地址为:192.168.2.254/24

PC2位于互联网区域,模拟外部互联网,地址段为:10.0.0.0/8,pc2地址为:10.0.0.1/8

Linux防火墙的三块网卡为别连接不同的网络区域,地址分别为 :ens33 192.168.1.254/24;ens34 10.0.0.100/8;ens35 192.168.2.254/24

三、实验要求

内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。

内部网络服务器s1通过DNAT发布服务到互联网。

互联网主机pc2能够访问DMZ区域的服务器,但是不能够进行ping和ssh连接。

四、环境准备

1.firewall

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

 
#配置网卡
 [root@SERVER1 ~]# cd /etc/sysconfig/network-scripts/
 [root@SERVER1 network-scripts]# vim ifcfg-ens160
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens160
 UUID=e9cd890f-3b47-4859-8c19-3040664051f7
 DEVICE=ens160
 ONBOOT=yes
 IPADDR=192.168.1.254
 PREFIX=24
 [root@SERVER1 network-scripts]# vim ifcfg-ens192
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens192
 DEVICE=ens192
 ONBOOT=yes
 IPADDR=10.0.0.100
 PREFIX=8
 [root@SERVER1 network-scripts]# vim ifcfg-ens224
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens224
 DEVICE=ens224
 ONBOOT=yes
 IPADDR=192.168.2.254
 PREFIX=24 
 #关闭防火墙 设置selinux
 [root@SERVER1 network-scripts]# systemctl stop firewalld.service 
 [root@SERVER1 network-scripts]# setenforce 0

(2)打开firewall路由转发

 [root@SERVER1 network-scripts]# vim /etc/sysctl.conf
 [root@SERVER1 network-scripts]# sysctl -p
 net.ipv4.ip_forward = 1

2.PC1(内网)

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

 #关闭防火墙 设置selinux
 [root@PC1 network-scripts]# systemctl stop firewalld.service 
 [root@PC1 network-scripts]# setenforce 0
 #设置网卡
 [root@PC1 ~]# cd /etc/sysconfig/network-scripts/
 [root@PC1 network-scripts]# vim ifcfg-ens160
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens160
 DEVICE=ens160
 ONBOOT=yes
 IPADDR=192.168.1.1
 PREFIX=24
 GATEWAY=192.168.1.254
 DNS1=192.168.1.254

3.PC2外网

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

 #关闭防火墙 设置selinux
 [root@PC2 network-scripts]# systemctl stop firewalld.service 
 [root@PC2 network-scripts]# setenforce 0
 #设置网卡 网关
 [root@PC2 ~]# cd /etc/sysconfig/network-scripts/
 [root@PC2 network-scripts]# vim ifcfg-ens160
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens160
 DEVICE=ens160
 IPADDR=10.0.0.1
 PREFIX=8
 GATEWAY=10.0.0.254
 DNS1=10.0.0.254
 ONBOOT=yes

4.服务器

(1)配置防火墙各大网卡IP并禁用 firewall和selinux

 #关闭防火墙 设置selinux
 [root@localhost network-scripts]# systemctl stop firewalld.service 
 [root@localhost network-scripts]# setenforce 0
 #设置网卡 网关
 [root@localhost ~]# cd /etc/sysconfig/network-scripts/
 [root@localhost network-scripts]# vim ifcfg-ens160
 TYPE=Ethernet
 BOOTPROTO=static
 NAME=ens160
 DEVICE=ens160
 ONBOOT=yes
 IPADDR=192.168.2.1
 PREFIX=24
 GATEWAY=192.168.2.254
 DNS1=192.168.2.254

(3)下载nginx,并开通服务

 #配置本地源
 [root@localhost ~]# cd /etc/yum.repos.d/
 [root@localhost yum.repos.d]# vim local.repo 
 [local]
 name=local
 baseurl=file:///mnt/AppStream
 enabled=1
 gpgcheck=0
 root@localhost yum.repos.d]# mount /dev/sr0 /mnt/
 mount: /mnt: WARNING: device write-protected, mounted read-only.
 mount: (hint) your fstab has been modified, but systemd still uses
        the old version; use 'systemctl daemon-reload' to reload.
 [root@localhost yum.repos.d]# yum install -y nginx

5.环境检测

(1)内网连接

 [root@PC1 ~]# ping 192.168.2.1
 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
 64 bytes from 192.168.2.1: icmp_seq=1 ttl=63 time=0.685 ms
 ​
 [root@PC1 ~]# ping 10.0.0.100
 PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
 64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.639 ms
 64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.694 ms
 ​
 [root@localhost ~]# ping 192.168.1.1
 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.505 ms
 ​
 [root@localhost ~]# ping 10.0.0.100
 PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
 64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.412 ms
 64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.404 ms
 ​

(2)外网连接

 [root@localhost network-scripts]# ping 10.0.0.100
 PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
 64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.811 ms
 64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.395 ms
 ​

五、防火墙配置及测试

内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。

 #修改iptables 内部网络通过SNAT,访问外部网络
 [root@SERVER1 ~]# iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
 #访问外网测试
 [root@SERVER1 ~]# ping 10.0.0.1
 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.469 ms
 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.408 ms
 ^C
 --- 10.0.0.1 ping statistics ---
 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
 rtt min/avg/max/mdev = 0.408/0.438/0.469/0.037 ms
 #修改iptables 使内网不能访问网关
 [root@SERVER1 ~]# iptables -t filter -A INPUT -s 192.168.1.1 -d 192.168.1.254 -p icmp --icmp-type 8 -j DROP
 [root@PC1 ~]# ping 192.168.1.254
 PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data.
 #服务器访问内网
 [root@localhost ~]# ping 192.168.1.1
 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.851 ms
 64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.822 ms

内部网络服务器s1通过DNAT发布服务到互联网。

 
 #配置nginx
 [root@localhost yum.repos.d]# systemctl start nginx
 [root@localhost yum.repos.d]# cd /usr/share/nginx/html/
 [root@localhost html]# ls
 404.html  50x.html  index.html  nginx-logo.png  poweredby.png
 [root@localhost html]# echo c2505 > index.html 
 [root@localhost html]# curl 192.168.2.1
 c2505
 ​
 #配置iptables
 [root@SERVER1 ~]# iptables -t nat -A PREROUTING -i ens192 -d 10.0.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1
 [root@SERVER1 ~]# iptables -nL -t nat
 Chain PREROUTING (policy ACCEPT)
 target     prot opt source               destination         
 DNAT       tcp  --  0.0.0.0/0            10.0.0.100           tcp dpt:80 to:192.168.2.1
 #测试
 [root@localhost ~]# curl 10.0.0.100
 c2505
互联网主机pc2能够

访问DMZ区域的服务器,但是不能够进行ping和ssh连接。

 #配置iptables
 [root@SERVER1 ~]# iptables -t nat -A PREROUTING -i ens192 -d 10.0.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1
 [root@SERVER1 ~]# iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
 [root@SERVER1 ~]# iptables -t filter -A INPUT -p tcp -s 10.0.0.1 --dport 22 -j DROP
 [root@SERVER1 ~]# iptables -nL 
 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination         
 DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
 DROP       tcp  --  10.0.0.1             0.0.0.0/0            tcp dpt:22
 #测试
 [root@localhost ~]# curl 10.0.0.100
 c2505
 [root@localhost ~]# ssh root@192.168.2.1
 ssh: connect to host 192.168.2.1 port 22: No route to host
 [root@localhost ~]# ping 192.168.2.1
 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
 ​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2399456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google AI 模式下的SEO革命:生成式搜索优化(GEO)与未来营销策略

一、搜索范式转变:从链接引导到答案交付 Google自2023年起逐步推出AI搜索功能,经历了SGE(Search Generative Experience)和Gemini阶段,最终在2025年全面上线了「AI Mode」搜索模式。与此同时,也保留了一种过…

SpringBoot中缓存@Cacheable出错

SpringBoot中使用Cacheable: 错误代码&#xff1a; Cacheable(value "FrontAdvertiseVOList", keyGenerator "cacheKey") Override public List<FrontAdvertiseVO> getFrontAdvertiseVOList(Integer count) {return this.list(Wrappers.<Adve…

iOS UIActivityViewController 组头处理

0x00 情形一 - (void)shareAction1 {// 当前 View 转成图片UIImage *image [self snapshotImage:self.view];NSArray *activityItems [image];UIActivityViewController *activityVC [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationAc…

《TCP/IP 详解 卷1:协议》第3章:链路层

以太网和IEEE802局域网/城域网标准 IEEE802局域网/城域网标准 IEEE 802 是一组由 IEEE&#xff08;电气与电子工程师协会&#xff09;定义的局域网和城域网通信标准系列&#xff0c;涵盖了从物理层到链路层的多个网络技术。其中&#xff1a; IEEE 802.3 定义的是传统的以太网…

Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程(二)

package com.test.xulk.es.entity.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.test.xulk.es.entity.Hotel;public interface HotelMapper extends BaseMapper<Hotel> { }集成Springboot 项目里面 官方地址&#xff1a; Elasticsearch …

数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)

数据库管理333期 2025-06-04 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff09;1 概念2 要求3 操作流程4 转移失败处理总结 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff0…

【DAY39】图像数据与显存

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 图像数据的格式&#xff1a;灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0…

AI代码库问答引擎Folda-Scan

简介 什么是 Folda-Scan &#xff1f; Folda-Scan 是一款革命性的智能项目问答工具&#xff0c; 完全在浏览器中本地运行 。它使用高级语义矢量化将您的代码库转变为对话伙伴&#xff0c;使代码理解和 AI 协作变得前所未有的简单和安全。其采用尖端的 Web 技术和 AI 算法构建&…

Kafka深度技术解析:架构、原理与最佳实践

一、 消息队列的本质价值与核心特性 1.1 分布式系统的“解耦器” 异步通信模型 代码列表 graph LRA[生产者] -->|异步推送| B[(消息队列)]B -->|按需拉取| C[消费者1]B -->|按需拉取| D[消费者2] 生产者发送后立即返回&#xff0c;消费者以自己的节奏处理消息。典…

基于cnn的通用图像分类项目

背景 项目上需要做一个图像分类的工程。本人希望这么一个工程可以帮助学习ai的新同学快速把代码跑起来&#xff0c;快速将自己的数据集投入到实战中&#xff01; 代码仓库地址&#xff1a;imageClassifier: 图片分类器 数据处理 自己准备的分类图像&#xff0c;按照文件夹分…

Linux环境管道通信介绍

目录 前言 一、通信的本质 二、匿名管道 1.通信资源——文件缓冲区 2.为什么叫匿名管道&#xff1f; ​编辑 3.匿名管道的创建过程 4.pipe函数 小结 5.一些问题 1&#xff09;匿名管道为什么要求父子进程将原本的读/写权限只保留一个 2&#xff09;为什么一开始父进程要以读/写…

DIC技术助力金属管材全场应变测量:高效解决方案

在石油管道、汽车排气系统、航空航天液压管路等工业场景中&#xff0c;金属管作为关键承力部件&#xff0c;其拉伸性能&#xff08;如弹性极限、颈缩行为、断裂韧性&#xff09;直接影响结构安全性和使用寿命。 实际应用中&#xff0c;选用合适的管材非常重要&#xff0c;通过…

嵌入式学习--江协stm32day1

失踪人口回归了&#xff0c;stm32的学习比起51要慢一些&#xff0c;因为涉及插线&#xff0c;可能存在漏插&#xff0c;不牢固等问题。 相对于51直接对寄存器的设置&#xff0c;stm32因为是32位修改起来比较麻烦&#xff0c;江协课程是基于标准库的&#xff0c;是对封装函数进…

湖北理元理律师事务所:债务化解中的心理重建与法律护航

专业法律顾问视角 一、债务危机的双重属性&#xff1a;法律问题与心理困境 在对173名债务人的调研中发现&#xff1a; 68%存在焦虑引发的决策障碍&#xff08;如不敢接听银行电话&#xff09; 42%因羞耻感隐瞒债务导致雪球效应 湖北理元理律师事务所创新采用法律-心理双轨…

【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城

概要设计 本节规划和定义了Woodnet桌游电商平台的软件概要设计说明书&#xff0c;描述了软件的总体设计、接口设计、运行设计、系统数据库结构设计以及系统出错处理设计&#xff0c;从整体上说明了系统设计的结构层次、处理流程、系统用例等。 本系统是一个独立的系统&#x…

六种高阶微分方程的特解(原创:daode3056)

高阶微分方程的通解是指包含所有可能解的解的表达式。对于一个 n 阶微分方程&#xff0c;其通解通常包含 n 个任意常数。这些任意常数可以通过初始条件或边界条件来确定。高阶微分方程的特解是指在通解中&#xff0c;特定地选择了一组常数&#xff0c;使得解满足给定的初始条件…

【C++11(上)】—— 我与C++的不解之缘(三十)

一、C11 这里简单了解一下C发展好吧&#xff1a; C11是C的第二个大版本&#xff0c;也是自C98以来最重要的一个版本。 它引入了大量的更改&#xff0c;它曾被人们称为C0x&#xff0c;因为它被期待在2010年之前发布&#xff1b;但在2011年8月12日才被采纳。 C03到C11花了8年时间…

【多线程初阶】wait() notify()

文章目录 协调多个线程间的执行顺序join 和 wait 区别sleep 和 wait 区别 wait()方法线程饿死调用 wait()唤醒 wait() notify()方法wait() 和 notify() 需对同一对象使用确保先 wait ,后 notify多个线程在同一对象上wait notify随机唤醒一个wait notifyAll()方法应用 wait() 和…

安全-JAVA开发-第二天

Web资源访问的流程 由此可见 客户访问JAVA开发的应用时 会先通过 监听器&#xff08;Listener&#xff09;和 过滤器&#xff08;Filter&#xff09; 今天简单的了解下这两个模块的开发过程 监听器&#xff08;Listener&#xff09; 主要是监听 我们触发了什么行为 并进行反应…

Python基础:文件简单操作

&#x1f343;引言 手把手带你快速上手Python Python基础专栏 一、&#x1f343;文件是什么 变量是把数据保存到内存中. 如果程序重启/主机重启, 内存中的数据就会丢失。 要想能让数据被持久化存储, 就可以把数据存储到硬盘中. 也就是在文件中保存。 通过文件的后缀名, 可以看…