只让服务器流量走 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

内网穿透——frp和花生壳实现从外部网络访问家中主机

想法产生 主机一般都放在宿舍内的,想要从其他地方访问宿舍内的服务器非常的不方便,但是又奈何宿舍宽带很难申请公网IP,所以才会想到用内网穿透的方式实现对宿舍内主机的访问。 notes 宿舍内都是局域网,连接到的校园网wifi或者宽带分配的IP都会随着重新连接产生变动,所以在此会使用到DDns技术。ddns就是把一个动态变化的IP地址和一个不变的域名绑定在一起,直接访问这个域名就可以实现访问到这个变化的IP地址的作用。 花生壳免费版会赠送一个域名,可以直接实现内网穿透,比较简便; frp适合有一个公网IP,然后通过公网IP的转发实现内网穿透。 在此之前,请确保已经安装openssh-server!!! 花生壳实现 大致流程 在花生壳官网上面下载linux版本的客户端; 安装完成之后在终端中输入: sudo phddns start sudo phddns enable sudo phddns status 然后会出现一个SN码,这个SN码就相当于这个主机的ID,然后在花生壳官网上使用SN码进行登录,密码默认是admin 通过sn登录之后再绑定到注册的花生壳帐号上;再到花生壳内网穿透界面去添加映射,内网地址填127.0.0.1或者是自己的局域网地址好像我都实验成功过。 都设置好之后可以在映射旁边又一个诊断按钮,可以看是否成功了。 在进行ssh连接的时候只需要ssh -o 12345 your_name@xxxxxx.xx就行了; 12345是你的映射上的外网端口,your_name是你的内网的用户名,xxxx.xx是你的域名 可能会出现的问题 首先请查看官方文档 第一步的内网服务和花生壳服务器连接不上 你可以phddns status检查一下他是OFFLINE还是ONLINE的状态,遇到OFFLINE就需要重启服务 等到他变成ONLINE之后,在检查花生壳网站上的最右上角的头像,鼠标悬浮就能看到有一个状态,状态若是离线,但是phddns又是ONLINE,就退出重新登录一下就好了。 同时可以看看左边边栏上有一个设备管理。 frp实现 访问frp的github仓库releases页面:https://github.com/fatedier/frp/releases frp的官方文档:https://gofrp.org/zh-cn/docs/overview/ 通过 SSH 访问内网机器 步骤 在具有公网 IP 的机器上部署 frps 部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口: bindPort = 7000 log_file = /var/log/frps.log 在frps中添加上日志文件的位置/var/log/frps.log,方便查看。 这里还支持dashboard,prometheus监控等功能。 参考配置:https://cloud.tencent.com/developer/article/1837482 [common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,请改成更复杂的 token = 52010 # 这个token之后在客户端会用到 # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = admin dashboard_pwd = admin enable_prometheus = true # frp日志配置 log_file = /var/log/frps....

December 20, 2023 · 2 min · 256 words · sirius1y

GNS3+cisco 动态路由实验RIP/OSRF

RIP 网络拓扑图 路由器配置 下面是路由器R1、R2和R3的配置示例: R1 配置: configure terminal interface FastEthernet0/0 ip address 10.1.1.1 255.255.255.0 no shutdown exit interface FastEthernet0/1 ip address 172.16.10.1 255.255.255.0 no shutdown exit router rip version 2 network 10.1.1.0 network 172.16.0.0 end wr R2 配置: configure terminal interface FastEthernet0/0 ip address 10.1.1.2 255.255.255.0 no shutdown exit router rip version 2 network 10.1.1.0 end wr R3 配置: configure terminal interface FastEthernet0/0 ip address 172.16.10.2 255.255.255.0 no shutdown exit router rip version 2 network 172....

October 30, 2023 · 2 min · 240 words · sirius1y

GNS3静态路由实验

预备知识 静态路由和动态路由是什么? 静态路由 静态路由是一种手动配置路由信息的方式,其中网络管理员手动指定每个目的地网络的下一跳路由器或出口。这些手动配置的路由信息通常在网络中不经常更改,因此称为"静态"路由。静态路由通常用于小型网络或需要特定路由路径的特殊情况,例如,将流量定向到特定服务器或分支机构。 静态路由的主要优点是简单和易于管理,因为管理员有完全的控制权。然而,它不适用于大型、复杂的网络,因为手动配置路由信息可能变得非常繁琐,并且难以应对网络拓扑的变化。 动态路由 动态路由是一种更灵活的路由方式,其中路由器能够自动学习网络拓扑和动态地调整路由表。动态路由协议允许路由器之间交换路由信息,以确定最佳路径到达目的地网络。一些常见的动态路由协议包括RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)和BGP(Border Gateway Protocol)等。 动态路由的主要优势在于其自动性和适应性。它适用于大型复杂的网络,因为它能够适应网络拓扑的变化,而无需手动更新路由信息。然而,动态路由也可能引入一些安全和性能方面的考虑,因此需要适当的配置和监控。 GNS3 console 模式介绍 用户 EXEC 模式 该模式下,提示符为“ Router>”,需要了解该模式下可以实用的命令,输入 “ ?”。 特权 EXEC 模式 查看 Cisco 路由器的系统参数,必需进入特权 EXEC 模式,输入命令: Router1> enable Password: Router1# 全局配置模式 若需要修改系统范围内的配置参数,必需进入全局配置模式。输入命令: Router1# configure terminal Router1(config)# 接口配置模式 若要修改网络接口,需要进入接口配置模式。输入命令: Router1(Config)#interface Ethernet 0/0 Router1(config-if)# 返回 Exit 命令:层层返回,即退回到上一个命令层次。 End 命令:从任何模式直接退回到特权 EXEC 模式。 Disable 命令:从特权 EXEC 模式返回到用户 EXEC 模式。即 Router1# disable Router1> Logout 命令:从用户 EXEC 模式终止控制台会话,输入 logout。...

October 30, 2023 · 2 min · 360 words · sirius1y

常用的网络命令

ipconfig, ifconfig, ip ipconfig是windows中的命令,linux上是ifconfig,但ip命令比ifconfig更强大,旨在取代ifconfig命令。 ping ping命令是DOS命令,一般用于检测网络是否通畅以及网络连接速度,结果只越大,说明速度越慢。它使用网络层的ICMP协议。 ping [参数选项] [主机名或IP地址] linux 参数 含义 -c 设置完成要求回应的次数 -i 指定收发信息的间隔时间 -s 设置数据包的大小 -w 在设定的秒后退出 windows 参数 含义 -t 连续对IP地址执行ping命令,直到用户以<control+c>键强制中断 -l 指定ping命令的数据长度 -n 执行特定次数的ping命令 netstat netstat 用来查看当前操作系统的网络连接状态、路由表、接口统计等信息,来自于 net-tools 工具包,ss 是 netstat 的升级版。 参数 含义 -a 显示主机中所有活动的网络连接信息 (包括监听、非监听状态的服务端口) -n 以数字的形式显示相关的主机地址、端口等信息 -p 显示与网络连接相关联的进程号、进程名称信息 (该选项需要 root 权限) -l 显示处于监听 (Listen) 状态的网络连接及端口信息 -t 查看 TCP (Transmission Control Protocol,传输控制协议) 相关的信息 -u 显示 UDP (User Datagram Protocol,用户数据报协议) 协议相关的信息 -r 显示路由表信息 -i 显示网卡列表 -g 显示组播组的关系 -s 显示网络统计信息 常用命令选项:...

October 26, 2023 · 4 min · 690 words · sirius1y