只让服务器流量走 VPN

背景 服务器在学校的校园网中,然后平时需要使用 Easy Connect 连接学校的 VPN 之后,才能通过 SSH 连接到服务器。但是学校配置的 VPN 又很烦人,会接管本机上的所有流量走校园网,导致访问其他网站的速度很慢,并且连接不上外网用不了 GPT 之类的麻烦。 学校提供的 VPN 服务有两种软件可以使用,一个是 Easy Connect,一种是 Open VPN 。两种我都尝试了,都是登陆的同样的账号,但是openvpn始终ssh连接不上学校内网中的服务器,但是 Easy Connect 却可以。所以之后我都是在 Easy Connect 上进行操作的。 发现问题 发现启动 VPN 软件之后,运行ifconfig可以看到本地会多一个utun*的网络接口,然后运行netstat -rn查看电脑的路由表中可以看到,有大量的路由配置信息指向了这个utun*的网络接口。 之前之所以连接上了 VPN 之后无法正常的访问外网,是因为学校的 VPN 服务器推送了很多的路由,几乎涵盖了从1.*.*.*到255.*.*.*中的所有路由,全部设置为走utun*。即使我的default路由走的是我正常的网口,但是具体的路由的优先级是要比default路由要高的,所以几乎全部都走了 VPN 。 解决思路 有两个方法可以解决这个问题: 1 在Docker上运行 VPN 软件进行转发 在本地启动一个Docker,然后让 VPN 运行在 Docker 内,将走服务器IP地址的流量走到 Docker 容器内,然后在容器内走 VPN 出去。这个方法肯定是可行的,不过感觉稍微麻烦了一点,采用了第二个idea 2 删除多余的路由表 在 VPN 软件启动之后,他不是注册了很多具体的路由嘛,而我的需求只是让服务器流量走 VPN 就可以了,其他的流量不用他管。所以写了一个脚本,在 VPN 软件启动之后运行就行。 脚本主要实现的功能是,在路由表中匹配 VPN 网口的所有路由,只保留我服务器那一条路由,其他的全部删除,就OK,简单又完美。 #!/bin/bash # 示例 # 提示用户输入网络接口名称 read -p "请输入 VPN 网络接口名称(例如utun6): " vpn_interface # 提示用户输入需要保留的服务器IP地址或网段 read -p "请输入需要保留的服务器IP地址或网段(例如192....

January 4, 2025 · 1 min · 132 words · sirius1y

Docker run hello-world 超时

问题描述 $ docker run hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'. 在安装完成docker之后,本来想运行一下 docker run hello-world测试安装成功与否,然后发现连接不上。 先测试以下curl这个网站的返回情况,发现返回401,说明 DNS 没有问题 $ curl -v https://registry-1.docker.io/v2/ * Uses proxy env variable no_proxy == '127.0.0.1,localhost' * Uses proxy env variable https_proxy == 'http://127.0.0.1:7890' * Trying 127.0.0.1:7890... * Connected to 127.0.0.1 (127.0.0.1) port 7890 * CONNECT tunnel: HTTP/1....

December 25, 2024 · 2 min · 402 words · sirius1y

BLOG迁移之旅

迁移的开始 在随着华为云服务器到期邮件和电话的轰炸之下,我终于开始行动起来要去迁移我的博客了。太久没有写博客,已经忘记了距离上一篇博文一经过了很久很久了,想不起来时间,只记得是在做 aorb 项目的时候写的。 也忘记了之前对博客进行了一系列 CI 的优化,现在已经能够实现提交博客内容到 git repo 上,会自动拉起 github action 进行检查和部署的操作。 不幸 然额呢,隐约记得我之前在部署的时候在 workflow 里面编写了一些机密 (secrets) 用于访问服务器但是又不公开,现在大体忘却了他们是干什么的了。服务器过了十二点就冻结了,现在晚上十点,明天下午有一个面试,可能面试官会看我的博客(虽然我大概知道他们不会这么做),但是还想在这之前把他修好。冰冷的房间,饥饿的肚子,颤抖的双手,宕机的脑袋…尝试了无论怎么修改 secrets 中的 private key,依然显示我的 SSH 验证不通过。似乎我隐约记得上次我也这么干过,在这里也卡住了。 … 还尝试了不用 github action,直接把它部署到云服务器上的方案,虽然最后也没成功(因为我后来发现这台新电脑上的博客拉下来之后本地都没有跑对页面)。 但是复习到了以下内容: 存放我们 public/ 代码的地方在 /var/www/blog/ 下,我是直接把 public/ 下的内容拿过的,没有要 public/ 这一层。这里要与 nginx 的配置相对应 nginx 的配置文件在:/etc/nginx/sites-availble/sirius1y.top,日志文件在 /var/log/nginx/error.log ,分析网站为什么返回403、404很常用的 检查 nginx 配置文件是否正确的命令:sudo nginx -t,重新加载 nginx 配置文件的命令 sudo systemctl reload nginx /var/www/下的文件所有者和组应该是 www-data,并且对目录和文件的权限有要求的 … 第二天晚上,在清醒的大脑之下,在排除了用户的权限和文件夹、文件的权限正确设置之后,google 了一下,发现网上有两种说法:https://github.com/openssl/openssl/issues/20054 。大概是: 添加一段 before_script 的代码 私钥后添加 \n 然后我尝试之后,由于我设置的用户没有 sudo 权限,所以在 before_scirot 中的 chmod 命令无法执行。然后就试了第二种方法,还是不行。然后我索性在私钥之后按下回车。然后,It works!...

December 16, 2024 · 1 min · 157 words · sirius1y

垃圾邮件分类器——使用Transformer模型微调实现

实现的目标 本项目使用Transformer模型对邮件进行垃圾邮件(spam)和正常邮件(ham)的分类。 数据集来源 数据集来自 SpamAssassin公共语料库 项目结构 data_processor.py: 处理数据加载和处理 data_preprocessor.py: 为模型准备数据 model.py: 定义Transformer模型 trainer.py: 包含模型训练逻辑 evaluator.py: 评估训练好的模型 main.py: 协调整个处理过程 environment.yml: 定义Conda环境

October 5, 2024 · 1 min · 20 words · sirius1y

Wifi神秘消失排查经历

在一个风和日丽的周六中午,有点热,然后坐在我旁边的同事突然发现公司的 Wifi 神秘消失了。 “额,咱们公司的wifi是不是用不了了呀” “我看看,好像是哦,这是咋回事?诶,这好像是我的工作职责内的事情耶,我去看看…” 问题排查经过 打开手机查看wifi列表发现平时经常连接的wifi消失无踪,但是有很多小的wifi密密麻麻的。 和mentor远程交流怀疑是不是AC控制器掉电导致的。 遂重启AC控制器,发现无效。 检查POE交换机的状态。 mentor检查线上设备,发现AP都下线了。 把POE交换机上的AP网线拔掉重新连接。 然后在交换机的命令行模式中排查问题,发现是AC控制器的管理模式变了,授权没了,导致AP上线不了。 基础知识 AP, Access Point 无线AP:即无线接入点,它用于无线网络的无线交换机,也是无线网络的核心。 通俗理解:AP是一个信号发射器,我们收到的WIFI信号都是AP发射出来的 AP的分类 面板式AP 吸顶式AP 室外AP 网上把AP划分为’胖AP’和’瘦AP' 胖AP:自带管理功能的AP,例:我们的家用路由器 瘦AP:不带管理功能的AP,简单来说可以把它理解成一个信号发送与接收的天线(需要AC控制) AC, Access controller 接入控制器 即无线控制器,是一种网络设备,负责管理某个区域内无线网络中的AP(瘦AP)。 主要功能:调节无缝漫游 例:你用手机,从商场1楼走到2楼,由AC来觉得什么时候让你的手机从1楼的AP切换到2楼的AP上。确保你不会因远离1楼的AP导致信号不好而无法联网。 如果你直接用2个普通的无线路由器,就会发生手机一直连着信号不好的1楼而不切换到2楼。直到1楼彻底没有信号后才会重新链接到2楼的路由上 一般来说,一台AC最多可以连接1024个AP,而每个AP最多可以连接255个手机。 可以批量设置AP密码,AP的SSID。

August 4, 2024 · 1 min · 36 words · sirius1y