使用frp转发vnc和ssh端口到固定ip的服务器

写这篇日记是因为最近一个学妹来问我相关的问题,而我刚好在三年前搭建过这样一个服务。不过在开始之前,必须声明,这篇文章的应用场景非常非常有限。如果你搜到了这篇文章,请先想一想,是不是自己的需求错了。你真的需要搭建这样一个服务吗?

进入正题。我的应用场景是,我刚好有一个服务器,拥有固定ip地址。而我实验室内部的电脑1有防火墙,不能从学校外部访问。我家的电脑2没有固定的ip地址,不能从家外访问。

但是,学校的电脑1,通过学校指定的http proxy可以主动访问外网,并且连接到我的服务器。家里的电脑2也是,虽然ip地址总是改变,但是能够访问我自己的服务器。

那么,解决方案就显而易见了。我们需要搭建一个服务,来接受来自电脑1和电脑2的主动连接请求,并保持这个连接。这样,第三者只需访问服务器的指定端口即可通过反向代理连接到电脑1和电脑2,从而实现内网穿透或是动态转发。

巧的是,frp这一软件刚好能够实现这个需求,同时绑定vnc和ssh的转发。frp分为server端和client端。server端安装在固定ip的服务器上,监听来自client的请求。

安装方法网上有很多,很容易搜索到。下面的安装和配置参考这篇博客:

https://blog.csdn.net/m0_49946916/article/details/107889425

安装运行frps

https://github.com/fatedier/frp 下载最新的frp,上传到VPS,然后按照下面的运行即可

# 解压
tar xf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
# 复制可执行程序
cp frps /usr/bin/
# 创建配置文件目录
mkdir /etc/frp
# 复制配置文件
cp frps.ini /etc/frp/
# 复制服务启动脚本
cp systemd/frps.service /etc/systemd/system/
# 重新加载配置文件
systemctl daemon-reload
# 开机启动frps
systemctl enable frps
# 启动frps
systemctl start frps

编辑配置文件,sudo nano /etc/frp/frps.ini

[common]
bind_addr =0.0.0.0
bind_port =7000
token = my_password

这篇教程可能是写的比较早,后期frp的作者在github上更新了web界面来监控运行状态。因此,我自己的配置文件其实还有下半部分

dashboard_port = 7500
# dashboard's username and password are both optional
dashboard_user = my_user
dashboard_pwd = my_password

保存,然后重启一下服务。

接下来,我们配置frpc,也就是电脑1和电脑2 。我的两台电脑是mac系统。不过我相信,linux系统应该也差不多。windows系统可能需要你自己搜一搜配置方法了,不过貌似也差不多。

安装运行frpc

同样下载程序,解压,然后新建一个目录,将frpc和frpc.ini复制到新建的目录

frpc.ini的配置项:

[common]
server_addr = 你的服务器ip
server_port = 7000
protocol = kcp
token = my_password
; login_fail_exit = false

[vnc_Mac1]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 9200
use_encryption = true
use_compression = true

[ssh_Mac1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 9222
use_encryption = true
use_compression = true

上边的common就是要连接的服务器。下面的vnc和ssh就是要转发的两项服务。哦对了,vnc server需要自己提前装好。我的就是默认的vnc 5900端口,ssh 22端口,如果你不是默认的,需要自己改。下面的remote port就是要从服务器访问的端口。比如vnc那里,就是9200,而ssh就是9222端口。这里可以改成你自己喜欢的。

最终效果,就像是你自己diy了一个teamviewer公司一样。但是不得不说,这个只是用来应急的,因为远程连接的时候,屏幕刷新率只有几个fps。不过清晰度是高清的,延迟也还算可以接受,毕竟我的学校,我的电脑,服务器都在东京,延迟也高不到哪里。

域名更新太贵了

两年没写什么日志了… 被研究折磨到没什么力气做其他事情。

今年我终于毕业了,可太不容易了。

刚刚更新了一下账单,发现因为日元贬值,原先更新只要4000多日元的,现在要6000了

痛,太痛了!!

小破站又炸了

这已经是本站第三次爆炸了。。。。

这次真的是炸得一点炸儿都不剩,仅存的这点东西还是从谷歌的缓存服务器上扒下来的。。。。

保存在服务器上的文件和数据,以及写好的软件,构建好的服务全都没了

哭死

朋友安慰我说,回忆还可以重新制造的

不过新制造的回忆,还算是回忆吗?

但总之,感谢谷歌!!虽然图片全都丢失了,但文字却保存了下来

2021,新的一年,新的折磨哈哈哈哈

年末总结

其实不应该这么早写年末总结的,因为毕竟还有两周才到新年。

刚刚谷歌给我推送了我的足迹…

我的足迹

目前为止只遍布了亚洲大陆,哈哈哈

不过,今年年底会在欧洲出现新的足迹!

目前为止,我最喜欢的城市排行榜:

#1 首尔#5 京都#9 大连
#2 深圳#6 北京#10 沈阳
#3 上海#7 济州#11 北九州
#4 广岛#8 仁川#12 香港

给我的QQ防撤回功能起个名字吧

逛超市的时候突然想到这件事。要不要给我的QQ防撤回功能起个名字。

毕竟在CPU空闲的时候,人最容易胡思乱想嘛。

然后仿照大型游戏的技能树的命名方式,我把它叫做「Not A Word」—— 一个字都不行

朋友R说,要不叫做「别跑!」吧

看起来是个不错的名字。

那就叫「别跑!」吧

在图书馆用联通网! ——改良版

上回(点此阅读)写了如何在任意地点访问Lab里的服务器,这次算是它的改良版。其实也没什么变化的,只是本次服务器只用一个网卡就能获取ipv6和ipv4而已。

算是一个小优化吧。

服务器单网口同时接入校园网和联通网

因为我的路由器也是Linux的一个发行版,padavan,所以可以通过控制台来开启ipv6

首先,我们设置路由器ipv6的连接类型为Native DHCPv6,选择WAN口为外网接口,设置外网地址为Stateless:RA,自动获取DNS,使用DHCPv6获取内网IPv6地址,启用LAN路由通告。然后应用设置。

然后,我们通过控制台逐条输入以下命令:

modprobe ip6table_mangle
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i eth2.2
brctl addif br0 eth2.2

这么做是为了:装载ipv6路由表,允许ipv6的数据使用eth2.2,桥接br0和eth2.2使后者成为前者的一个端口。

此处可以将这三行代码保存为脚本,每次路由开机执行。就免去了寝室断电之后要重新执行的麻烦。

这时接在LAN口的设备就能使用联通的ipv4地址,以及校园网ipv6地址了。

然后在这台机器上配置ss-server,即可从校园任何角落连接NEU使用联通网了。

除此之外 搞点事情吧!

既然路由器是linux系统的,为何不好好利用它一下呢?

应当注意到,路由器并没有固定的ip地址,并且可恶的ISP还屏蔽了80端口。所以要实现这个功能,我们需要实现路由器外网ip的ddns,以及80端口的转发。

ddns我选择使用阿里云的,不会像花生壳那样小气每个月只有1GB流量,而且毕竟是阿里系的,安全有保障。

首先,我们需要在阿里云(点此打开)注册账户,此步具体方法略。然后我们打开控制台,鼠标放在右上角头像那里,点击accesskeys,这里会提醒你注意安全,不要理他直接点击继续使用accesskey即可。然后创建一个accesskey。注意!不要向任何人透露你的accesskey和secret!妥善保管!

返回控制台,在左侧应用列表中找到云解析dns这个选项。将你的顶级域名添加进去。比如这里就是leoxxxx.info

之后阿里云会提示要在域名购买商那里把NS改为ns1.aliname.com之类的,照做即可。

至此,在阿里云端的动态解析就完成了。现在我们带着key和secret,访问路由器的动态域名解析页面,将他们填入aliddns对应位置,然后在域名那里填上自己喜欢的名称,如这里我填的是router.leoxxxx.info,方便记忆。

动态域名解析到此结束。然后我们开始配置WAN口的UPnP转发。

为什么要配置这个呢?就是可恶的联通封锁了80端口。所以我们必须要用其他端口了。

这里我配置了2条。一条是路由器192.168.123.1:80端口TCP协议转发到WAN口1234端口。另一条是内网的服务器(就是我那台破Dell电脑,此处可自行换成Lab的服务器)192.168.123.18:22转发到外网的1022端口。方便使用ssh

至此,我们的配置就完成了。

要管理路由器时,在浏览器输入router.leoxxxx.info:1234然后输入用户名和密码即可。

使用网址随时管理路由

如果启用samba和ftp的话,就能够使用ftp随时随地访问自己的私人云盘。此处不需要加端口号。

ftp访问私有云盘

访问服务器(我寝室那台破戴尔电脑)的时候,输入ssh -p 1022 [email protected],而访问路由器本体的时候,则是ssh [email protected],可以通过端口号区分。

另一个好处就是,这样即使ipv6地址变了之后也不怕了(因为我发现桥接之后ipv6地址可能会改变)。我们可以ssh上去直接ifconfig看一下。

这个方案的一个缺点就是开一天的笔记本电脑,每天都要耗费一度电。

所以我打算用导师给的零花钱(此处感谢良心导师!!!)买个树莓派专门运行ss-server程序,就不用笔记本了,开一天也不耗什么电,美滋滋。

至此本文就结束了。

预祝大家 令和年,新年大吉!

朝花夕誓

这应该是我写的第一篇观后感吧…

昨晚在bilibili看完的电影,直到现在还令我的心情久久不能平复。

故事主要讲的是在世界上有一个古老的种族,离别一族。族人的美貌能够永久保持,寿命也能够达到几百年。对于凡人来说,仿佛就像神仙一样的存在。

但是这样与世隔绝的种族却遭到了入侵,族人也零落在了世界各地。

女主マキア在逃亡的过程中遇到了一个被遗弃的人类婴儿。然而对于只有15岁的少女来说,独自抚养一个孩子还是太困难了。

还是少女的マキア

但是幸好她遇上了能够寄住的好人家,并将エリアル养到了5岁。

在那之后却由于一些列原因,他们只能离开原来的地方,到别处去住。直到这时マキア才知道作为母亲的辛苦。

由于マキア的容颜几乎不会随着时间改变,逐渐长大的エリアル也在认知上出现了偏差。在打工的酒吧里经常被说是私奔的小情侣。

30歳になったマキア

一次和朋友喝酒后,エリアル终于和マキア决裂了。清晨,エリアル离开了家,离开了マキア,加入了军队。在那之后,マキア也被クリム带走。

六年后,战争爆发。在王宫前,他们再次相遇了。マキア温柔地将累倒的エリアル放在腿上。等他醒来之后离开了他。而エリアル也终于久违地说出了「妈妈」

さようならの朝

这部影片给我最大的冲击,并不是亲情或者爱情,是时间。

这时我才明白了为什么长老说在凡间一定不要爱上别人,不然你会变得孤单一人的。

细细品味这句话,确实不无道理。对于400年的生命,几十岁的凡人的生命确实太短暂了。

マキア见证了エリアル的一生,从孤身一人的婴儿,到已为曾祖父的垂暮老人。

不要和别人有牵挂,就不会变得孤独吗?还是像マキア最后说的,和别人的相遇还会伴随着快乐呢?

我无从得知。

但能确定的是,如果不珍惜自己短暂的寿命,在我60岁的时候,一定会对年轻的我感到后悔的。

IMDb:https://www.imdb.com/title/tt7339826/

Lab里服务器访问互联网的一种可能的解决方案

写这篇文章之前,我刚搭好校内的6to4转换通道。现在正坐在图书馆里用联通网的线路。

记得去年还是前年看到过一个小广告。一个计算机的学长在实验室做了个服务器,跟大家说只要买他的服务,就可以连NEU再挂上VPN得到超快的网速,而不是慢吞吞的校园网。

当时在想,还有这种好事?

现在想想,大概他当时做的就是我这个东西吧…

好了,该说正题了。

联通上网账号的配置

首先,我们需要一个联通的上网账号,破解它的限制,让它能在路由器上使用。

大一的时候破解过一次联通的深澜拨号器,但是当时不懂「闷声发大财」的道理,写了文章大肆炫耀。。。然后被联通主管知道了,几个月之后联通的工程师把深澜加密方式升级成了{SRUN2},当时的方法也白费了。后来一个学弟破解了{SRUN2}的加密,并且写了心跳软件,保证可以可以欺骗联通的拨号服务器。然而好景不长,现在(2019年3月)联通已经采用了{SRUN3}了。

但是生活总是充满戏剧性。

前几天我发现,联通为了保证老用户能够正常使用,其实是允许不同加密方式并用拨号的。即使是今年新注册的用户也可以使用2015版的认证方式。前提是你有当时的拨号软件,然后成功拨号并在联通那里留下了认证记录。

所以操作就很简单了。连上CNC-PPPoE然后使用2015年的拨号器进行正常拨号。

SRUN的2015版MAC下载地址: https://pan.baidu.com/s/1KpKBRERIqAC7PlhPv8Eoig提取码:7ucs

然后打开Console,查看system.log,找到SRUN字段。那个就是被加密的用户名。(注意不要复制到空格)

然后打开terminal,输入ifconfig查看拨号时使用的网卡的MAC地址。

现在我们有了加密之后的用户名,密码(密码就是原密码,不加密的),MAC地址

将这三条数据输入路由器,即可正常拨号联通上网。

这里其实使用学弟的{SRUN2}也可以。但是由于要用到心跳包(即每隔一段时间向联通认证服务器发送数据,伪装成深澜拨号,不然就会断网),比较麻烦。因此采用{SRUN}方法。

6to4通道服务器的配置

这里我用的是一台闲置的笔记本,安装ubuntu 14的桌面版做的服务器。

由于我那台电脑很老,是用电话线(RJ-11)上网的,所以我用的是两个外加的网卡(RJ-45)。一个网卡eth0连接路由器(联通),一个eth1连接校园网。这样我们就能够从校内任意一个角落连接NEU来访问这台服务器了。然后这台服务器再用联通网访问外网。

要实现上述功能,需要配置两个网卡之间数据的转发,让来自eth1的数据从eth0访问外部网络。不然的话会出现找不到DNS路径,导致无法正常访问ipv4站点的问题。

可是,我懒呀 ;- )

于是我把eth1的ipv4那里,从DHCP改成了Disabled,让网卡获取不到ipv4地址。

这样校园网那里只有ipv6了,这样ipv4的流量就自然而然地使用eth0来访问了。(连我自己都觉得自己很机智)

这样配置下来,基本就完成了。

服务器的访问相关

在校内,我们只需要访问其ipv6地址即可。理论上来说,ip地址是可变的。但实际上,之前我的服务器开了半年多了,期间关机和重启无数次,ipv6地址还是不变。

原因就是ipv6地址实在是太多了,远远没有达到两台设备地址冲突的程度。因此学校的网关会记住原先设备的地址。即使是重启也没有关系。

在校外,大部分人没有ipv6地址。所以最简单的办法就是访问联通的ip了(需要提前做好路由器和服务器的端口映射)。一般来说,由于我们是路由器拨号,所以路由器不是突然断电重播,那么ip地址也是不会变动的。如果害怕ip地址变动,可以在路由器那里做一下ddns的解析。这样只需要使用网址即可访问了。

其他一些小细节

路由器那里其实我并不是直接把它连接到eth0的,而是稍微配置了一下。

第一级路由器用来拨号,并且配置了shadowsocks,让它在访问国内网站的时候都直连(Direct)。这样看哔哩哔哩或者AcFun的时候就不会出现地域错误了。然后在访问国外网站的时候均使用代理(Proxy),这样就能看ニコニコ或者YouTube之类的网站了。注意,这里使用的并不是PAC模式,而是IP区分模式!

然后在一级路由下面再接一个二级路由。此二级路由主要是给数据进行加壳,防止联通检测上网人数的。这样上网人数永远是1人了。这一人就是这台二级路由。之后再从二级路由连接服务器的eth0

然后是客户端。我们在校内只需要使用ss访问服务器的ipv6地址,输入正确的密码和加密方式即可。这里甚至不加密都ok。反正校内没有防火墙,不会检测你的数据是否违规。这里ss client使用全局(Global)模式。

这样理论上来说我们就可以愉悦地在图书馆喝着茶,享受高速的联通网络了。

但是且慢!你会发现微信和QQ发不出去。。。。。

这是因为这两个软件懒得做代理设置,走的是直连。由于我们这里没在ipgw拨号,所以当然发不出去了。那么解决方案有两个。

第一种方法是最简单的。就是先关闭ss-client,然后在ipgw拨好号,再打开ss-client的Global模式。这样qq和微信都是用校园网,而其他的软件都是联通网了。

但是,作为一个校园网已经流量超出了几十G的人,怎么可能会善罢甘休呢?

第二种方法就是,使用Proxifier进行配置,建立规则让WeChat和QQ的全部流量重定向到Localhost的1087端口,这个端口是ss-client的HTTP Global Proxy端口。这样就能够把数据中转到服务器上,使用联通上网了。

这篇文章到这里应该就要结束了。在结束之前,我整理了一下网络访问关系图。

整体网络连接图

校内计算机访问服务器以及访问互联网关系图如下

校内访问服务器及访问网络

校外通过联通网络访问服务器关系图如下

校外通过联通DDNS进行访问服务器

校外通过ipv6直连的关系图,略

Wordlist(单词表)的由来

说起来… 看到我的博客上有一个分类叫做单词表,一定很奇怪吧。但其实这里是用来写美食的。

为什么专门把美食写成Wordlist呢?

以前,在学习外语的时候时常遇到看不懂的单词,我是指,即使看了翻译也不知道是什么意思…

比如:

おしるこ – 红豆汤小豆汁…?

お好み焼き – 大阪烧… 为什么要烧大阪?

早茶 – 就是早上喝的茶吗?

炒酸奶 – 为什么酸奶能够炒?不会化掉吗?

八つ橋 – 八桥饼… 是一种什么样的饼呢…

还有一些食物虽然能够从字面上知道意思,但还是想要试一试…

Fish & Chips – 小学课本让我魂牵梦绕的食物

ナポリタン – 朋友R说是和风意大利面…

水ギョウザ – 乱马里面出现的一种食物,大概是饺子吧

삼겹살(サムギョップサル) – 去韩国前S推荐给我的,韩式烤肉

Macaron – 马卡龙 学法语课的时候听蕾老师讲的 还被高中朋友Y嘲笑过

Jambon-beurre – 字面意思就是火腿黄油 法国三明治

Crêpe – 可丽饼 在日本的动画里也经常出现呢

于是带着 吃不到这些美食的怨念 吃到美好食物的愿望,我创建了这个分类,用以记录今后遇见的食物。

ps. 会把以前写过的日记一点一点搬运过来

刚刚完成了网站迁移

之前的博客一直是用Hexo写的。记得当时配置Hexo花了好一番功夫,才把原理弄清楚。

大概是在本地用Markdown语言写好博客的正文,然后再把md文件传输到本地git仓库。然后使用git命令,把本地的新增内容部署到服务器的git仓库。这是服务器端的hook检测到git仓库的变化,然后将其解析到网站目录下对应的位置。这样刷新之后就能够看到网站的更新内容了。

之前一直嫌这个太麻烦,用Markdown进行写作就是一件很麻烦的事情了。每次都是开着Sublime写,还要考虑各种标签,不能像用Word写Rich Text那么灵活。后来我知道了Wordpress,研究了一小下,就打算把博客迁移到这里了。

优点非常明显,发文章的时候终于不需要在命令行先cd到本地网站下面hexo new post然后再从Sublime读取修改md文件,最后再git hexo deploy了。简直是傻瓜都能建站了。

缺点的话… 好像没什么特别明显的,硬要说的话,就是我不会php语言,只能按照它给我的用,不能自己折腾了。

一点小坑:部署完成后在vps上面curl “localhost”就一切都好好的。但是在浏览器上面访问inori.life 就各种页面错乱。我一直搞不明白是怎么回事,还重新安装了好几次Cent,后来发现是Cloudflare的锅。因为之前我是在godaddy买的域名,然后改了NS服务器,一直用Cloudflare的https服务和CDN服务。结果wordpress部署之后本地cookie和cache,以及CND上面的cache都没有清楚,而坑爹的是它要好久才能刷新一次cache,就这样我对网站进行了大幅改动,CDN上面的cache却没有刷新。就出现了页面完全错乱。然后现在我把强制https关掉了,NS换回了godaddy默认的。当然,这样服务器访问速度也下降了,真实ip也暴露了。。。不过网站总算是正常工作了。

之前的网站可以通过下面的链接访问 ↓

http://old.inori.life/

这个网站工作了大半年,只有一篇文章被楓楓姐评论了。。。

嘛。。。倒也没什么纠结的啦,反正只是个写日记的地方啦w

ps. 本站支持ipv4和ipv6,访问 https://inori.life 的时候就会自动选择线路。但如果要指定使用ipv6线路,可以使用 http://ipv6.inori.life 强制访问。