先说一下原理,连接上校园网设备之后只要不进行认证,大部分的流量只要是经过校园网设备都会拦截之后给客户端重定向到一个认证页面(本文封面),让其进行认证。不进行认证的小部分流量比如说是dhcp、dns都不会进行拦截重定向,dhcp要进行分配ip,刚连接的设备需要通过这个dhcp才可以拿到自己的ip地址,dns是域名解析服务也不会拦截。他们的端口分别是DHCP(UDP/67服务端、UDP/68客户端)、DNS(UDP/53),目前只发现了这两个服务的端口是不被拦截的。我们可以通过这些端口来绕过流量的拦截。例如使用虚拟专用网络、虚拟隧道等技术来实现绕过拦截。
本文服务端使用V2ray软件进行绕过,项目地址以及文档地址如下:
项目地址:https://github.com/v2fly/v2ray-core
客户端为了方便采用V2rayN和服务端进行链接,项目地址如下:
项目地址:https://github.com/2dust/v2rayN
我们在服务端部署一下v2ray,如何去下载这里不多讲解,部署方式如下
# 下载
[root@dj1 work]# wget https://github.com/v2fly/v2ray-core/releases/download/v5.3.0/v2ray-linux-64.zip
100%[==============================================================================================>] 11,706,579 3.22MB/s in 3.5s
# 解压
[root@dj1 work]# unzip v2ray-linux-64.zip
Archive: v2ray-linux-64.zip
inflating: config.json
inflating: geosite.dat
inflating: geoip-only-cn-private.dat
creating: systemd/
creating: systemd/system/
inflating: systemd/system/v2ray.service
inflating: systemd/system/v2ray@.service
inflating: vpoint_socks_vmess.json
inflating: geoip.dat
inflating: v2ray
inflating: vpoint_vmess_freedom.json
# 配置
[root@dj1 work]# mv config.json config.json.bak
[root@dj1 work]# vim config.json
# 配置如下
{
"inbounds": [
{
"port": 53, // 服务器监听端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "0297a6ed-9152-4ad1-a80a-b248a9c4d3ad"
}
]
},
"streamSettings": {
"network": "mkcp", //此处的 mkcp 也可写成 kcp,两种写法是起同样的效果
"kcpSettings": {
"uplinkCapacity": 5,
"downlinkCapacity": 100,
"congestion": true,
"header": {
"type": "none"
}
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
# 运行v2ray,这里采用screen工具放在后台运行.
[root@dj1 work]# screen -S V2
[root@dj1 work]# ./v2ray run
V2Ray 5.3.0 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.20 linux/amd64)
A unified platform for anti-censorship.
2023/03/17 13:02:30 Using default config: /root/work/config.json
2023/03/17 13:02:30 [Warning] V2Ray 5.3.0 started
# ctrl + a + d
[detached from 81853.V2]
这里就配置好了,我这里用的是V2ray的VMess协议端口用的是dns的53端口关于VMess的配置文档可以在V2ray的文档中找到这里不多做解释,clients中的id算是链接的token,需要记住,这个id不能随便写,需要通过特殊的算法生成可以直接使用v2rayn来生成 这里也多做讲解。
下载方式这里不细说了,去github中的版本列表中都有。下载好之后打开软件,在左上角服务器-》添加VMess服务器中配置,配置如下
地址填写自己的服务器地址,用户id这里可以直接生成,需要和服务端一样。协议选择kcp即可。
配置好之后"右键左下角的v2ray的图标选择路由-》全局"。之后再设置一下代理"右键右下角图标-》系统代理-》自动配置系统代理"。
连接上校园网之后就会发现不会再跳转到认证页面。实际上网的速度和服务器的网络规格挂钩。不是用校园网的时候建议关闭代理不然数据会一直走代理会出现限速的现象可以通过"右键右下角图标-》系统代理-》清除系统代理"来解决。
]]>Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。
在Kubernetes集群中,客户端通常有两类:
ApiServer是访问及管理资源对象的唯一入口。任何一个请求访问ApiServer,都要经过下面三个流程:
Kubernetes集群安全的最关键点在于如何识别并认证客户端身份,它提供了3种客户端身份认证方式:
HTTP Base认证:通过用户名+密码的方式认证
这种认证方式是把“用户名:密码”用BASE64算法进行编码后的字符串放在HTTP请求中的Header Authorization域里发送给服务端。服务端收到后进行解码,获取用户名及密码,然后进行用户身份认证的过程。
HTTP Token认证:通过一个Token来识别合法用户
这种认证方式是用一个很长的难以被模仿的字符串--Token来表明客户身份的一种方式。每个Token对应一个用户名,当客户端发起API调用请求时,需要在HTTP Header里放入Token,API Server接到Token后会跟服务器中保存的token进行比对,然后进行用户身份认证的过程。
HTTPS证书认证:基于CA根证书签名的双向数字证书认证方式
这种认证方式是安全性最高的一种方式,但是同时也是操作起来最麻烦的一种方式。
证书申请和下发
HTTPS通信双方的服务器向CA机构申请证书,CA机构下发根证书、服务端证书及私钥给申请者
客户端和服务端的双向认证
1> 客户端向服务器端发起请求,服务端下发自己的证书给客户端,
客户端接收到证书后,通过私钥解密证书,在证书中获得服务端的公钥,
客户端利用服务器端的公钥认证证书中的信息,如果一致,则认可这个服务器
2> 客户端发送自己的证书给服务器端,服务端接收到证书后,通过私钥解密证书,
在证书中获得客户端的公钥,并用该公钥认证证书信息,确认客户端是否合法
服务器端和客户端进行通信
服务器端和客户端协商好加密方案后,客户端会产生一个随机的秘钥并加密,然后发送到服务器端。
服务器端接收这个秘钥后,双方接下来通信的所有内容都通过该随机秘钥加密
注意: Kubernetes允许同时配置多种认证方式,只要其中任意一个方式认证通过即可]]>