Skip to content

Commit

Permalink
pve防火墙设置
Browse files Browse the repository at this point in the history
  • Loading branch information
ChenSino committed Sep 29, 2024
1 parent 35d47a5 commit 22b16e8
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 0 deletions.
38 changes: 38 additions & 0 deletions docs/java/framework/security/DelegatingFilterProxy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: DelegatingFilterProxy介绍
date: 2024-09-20
author: chensino
publish: true
isOriginal: true
---

### 作用

在典型的 Spring 应用中,ContextLoaderListener 通常用于加载 Spring 的应用上下文(ApplicationContext),并管理其中定义的 Spring Bean。然而,Servlet 容器在启动时,会优先初始化过滤器(Filter)实例,而此时 Spring 上下文可能还没有完全加载。

#### 具体解析:

1. ContextLoaderListener:

- ContextLoaderListener 是 Spring 中常见的监听器,负责在应用启动时加载 Spring 的 ApplicationContext,从而初始化应用中的所有 Spring Bean。这通常是在应用启动的较晚阶段完成的。
- ContextLoaderListener 会监听 Web 应用的启动事件,并在合适的时机加载和管理 Spring 上下文。

2. Servlet 过滤器的加载顺序:

- 在典型的 Servlet 容器(如 Tomcat)中,过滤器的实例化和注册会在应用启动的早期阶段进行,即在应用的主业务逻辑启动之前。
- 这些过滤器的初始化是 Servlet 容器的一部分,不依赖于 Spring 的 ApplicationContext。换句话说,过滤器的生命周期由 Servlet 容器本身管理,而不受 Spring 管理的影响。

3. 问题所在:

- 因为过滤器(Filter)的实例需要在 Spring 上下文加载之前注册,而 Spring 的 Bean 管理是由 ContextLoaderListener 在较后阶段完成的,这就导致了过滤器实例在创建时无法直接依赖于 Spring 的 Bean 或上下文。如果直接在 web.xml 中定义过滤器,过滤器实例会在 Spring 上下文加载完成之前被创建。

#### 解决方案——DelegatingFilterProxy:

- DelegatingFilterProxy 可以解决这个问题。它允许 Servlet 容器在初始化过滤器时,并不直接创建过滤器的实际实例,而是通过代理的方式,将过滤器的执行逻辑委托给 Spring 上下文中的某个 Bean。这样,过滤器的真正逻辑就可以依赖于 Spring 容器管理的 Bean。
- 具体来说,DelegatingFilterProxy 本身是一个标准的 Servlet 过滤器,在容器启动时被注册。但是它在处理过滤时,会去查找 Spring 上下文中已经定义好的过滤器 Bean(例如 Spring Security 的 FilterChainProxy),并将请求委托给这个 Spring 管理的过滤器 Bean。

#### 总结:

- 问题:在传统的 Servlet 应用中,过滤器的初始化顺序早于 Spring 上下文的加载,这导致无法将 Spring 的依赖注入直接应用于过滤器。
- 解决:通过使用 DelegatingFilterProxy,可以将过滤器的创建延迟到 Spring 上下文加载完成之后,由 Spring 容器管理过滤器实例的生命周期,使得过滤器可以正常依赖 Spring Bean。
因此,DelegatingFilterProxy 是一个桥梁,它确保即使 Servlet 容器在 Spring 上下文加载之前注册过滤器,过滤器的实际执行逻辑依然能够使用 Spring 管理的 Bean 和资源。
90 changes: 90 additions & 0 deletions docs/other/pve/firewall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: pve防火墙
date: 2024-09-29
author: chensino
publish: true
isOriginal: true
---

参考:<https://www.xh86.me/?p=11324>

### 一、防火墙简介

pve有3个层级防火墙:

1. 数据中心的防火墙
2. 节点防火墙(主机防火墙)
3. 虚拟机防火墙

![20240929173211](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929173211.png)

#### 1.1 数据中心防火墙

数据中心,是由节点组成的一个集群。
可以说,数据中心防火墙,是专门处理集群流量的防火墙。

==只有数据中心防火墙开启,才能开启集群内的防火墙,否则单独开启vm的防火墙是无效的。== 它是一个总开关

#### 1.2 主机防火墙

主机防火墙,只负责处理虚拟化服务器上的流量,比如一台pve服务器ip为192.168.1.2。

那么这个防火墙,只会关注192.168.1.2的流量。下面的虚拟机流量是独立开的。

这个防火墙的开关,不会影响vm的防火墙,所以要开启vm的防火墙,不必须开启这个防火墙,不同于数据中心防火墙。

说的直白一点就是这个防火墙控制的就是pve那个debian系统本身,比如pve的web管理页面(8006端口)、ssh等

#### 1.3 虚拟机防火墙

这个就是系统级别的防火墙了,和我们平时用的物理机防火墙就是一样的了

### 二: 防火墙配置文件

pve的防火墙配置文件在下面路径

~~~shell
#数据中心防火墙

/etc/pve/firewall/cluster.fw

#主机防火墙

/etc/pve/nodes/<nodename>/host.fw

#vm和lxc的防火墙

/etc/pve/firewall/<VMID>.fw
~~~

### 三、实际配置

#### 3.1 配置主机防火墙

目的是实现pve系统收到保护,我不想让别人的ip随便登录我的pve管理界面,以及远程我的sshd服务

1、 开启数据中心防火墙(必须开,否则所有防火墙就不生效)

![20240929174029](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174029.png)

2、设置别名

在数据中心设置一个别名,方便在其他地方引用,当然也可以在虚拟机防火墙设置也行,这里我犯了一个严重错误导致浪费很长时间。我的目的是想让所有192.168内网都放行,结果我写成192.168.0.0/24,这个放行的其实是192.168.0.1到192.168.0.255,正确写法应该是192.168.1.0/24

![20240929174255](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174255.png)

3、在主机防火墙引入上一步设置的别名

![20240929174733](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174733.png)

4、开启主机防火墙

![20240929174802](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174802.png)

#### 3.2 开启虚拟机级别防火墙

1、2步同上,3、4步也差不多,不过要点到对应的虚拟机再设置。

![20240929174925](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174925.png)

![20240929174938](https://afatpig.oss-cn-chengdu.aliyuncs.com/blog/20240929174938.png)
2 changes: 2 additions & 0 deletions docs/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
//js冒泡排序函数
function bubbleSort(arr) {

0 comments on commit 22b16e8

Please sign in to comment.