我们拥有几台计算机,分别起名叫做哆啦A梦、大雄、静香。起这样的名字比ABC什么的好多了,不那么绕圈。
计算机名称 | 特点 | 备注 | 需求 | 访问障碍 |
---|---|---|---|---|
哆啦A梦 | 公网可达 | 可对外提供一些服务,比如网站,数据库等等 | 无法直接访问静香和大雄 | |
大雄 | 仅可上公网 | 可以用浏览器访问哆啦A梦的网站和数据库 | 自己有个小网站,想给静香看 | 无法直接访问静香 |
静香 | 仅可上公网 | 可以用浏览器访问哆啦A梦的网站和数据库 | 自己有个小网站,想给大雄看 | 无法直接访问大雄 |
一句话总结我们的场景:大雄和静香只能访问或者看到哆啦A梦,但是不能相互访问,苦命鸳鸯呀!
让大雄和静香通过哆啦A梦这台计算机,实现苦命鸳鸯的直接访问,让大雄可以看到静香的小网站,静香也可以访问大雄的小网站。
给三个人同时拷贝一份gost最新版,那到哪里下载呢?巧了,我这里正好有地址 https://github.com/ginuerzh/gost/releases
绿色软件,无需安装,解压就可以使用。真是居家旅行,杀人越货,必备… 好像串节目了,继续我们的机器猫。
gost本身提供代理服务功能,同时也提供了端口转发功能,我们就是利用他的这些功能把哆啦A梦变成公网代理服务器,然后在这个基础上,再把它升级成一个代理中转站。这里所说的升级,不是功能的升级,而是理解上的一种升级,是把我们看待事物的方式进行升级。哆啦A梦还是哆啦A梦,鸳鸯还是鸳鸯,只是他们不苦命了而已。哈哈。
通俗的理解过程是这样的:
所以整个联通过程如下:
你可能会问,为啥还要把龙头接回家,直接访问不就好了,反正已经在哆啦A梦身上了,或者说已经在公网了。
的确如此,道理上讲可以这样访问,但是不要忘记,大雄和静香提供的网站可能仅仅希望他们互相访问,不想让别人访问,并且访问时不需要特殊的过程(例如加密解密啥的)。所以我们这里所说的接回家,其实就是让最终的用户简单化,傻瓜化的访问网站。
先上代码,如下:
rem 在哆啦A梦上执行
rem gost -L socks5://:代理口
rem 例如代理口为1080时,执行代码如下
gost -L socks5://:1080
此时哆啦A梦开通1080端口,提供对外的代理服务功能,让大雄和静香可以连接,如果考虑安全性可以增加密码,防止胖虎等人连接
rem 在哆啦A梦上执行代理功能,提供密码防止他人使用
rem gost -L socks5://用户名:密码@ip地址:代理口
gost -L socks5://root:password@:1080
代码如下:
rem 在大雄上执行,他自己网站工作在80端口
rem 在哆啦A梦身上留下一个大雄龙头,端口号9000
gost -L=rtcp://:9000/大雄计算机:80 -F=socks5://哆啦A梦:代理口
此时哆啦A梦会开放两个端口出来。一个1080的代理端口,对外提供代理服务,之前已经说过;再一个就是9000号端口,他其实就是大雄龙头,如果直接公网上去访问哆啦A梦:9000,可以直接看到大雄的网站。这样谁都可以看到大雄的网站,非常不安全,这个我们等会说,先解释一下命令行。
整个命令行分成三个部分,如下表:
命令行 | 功能 |
---|---|
gost | 主命令(注意:如下的命令都是在大雄计算机上执行) |
-L=rtcp://:9000/大雄计算机:80 | 将大雄计算机上的80号端口,也就是我自己的80端口,映射到哆啦A梦的9000号上去。L代表监听的意思,rtcp是远端端口映射的意思,这里远端就是哆啦A梦 |
-F=socks5://哆啦A梦:代理口 | 指明上一行的操作最终通过哆啦A梦的代理服务进行中转 |
如果说,我们把大雄龙头映射到哆啦A梦9000上很危险,可是我们除了在哆啦A梦身上开龙头,没有别的法子,这该如何是好呢?
其实换个角度想,我们本质上是要把大雄的某种功能开放出去,只不过借用一下哆啦A梦的公网可达的能力,所以我们完全可以不把网站映射到9000上呀,我们可以把大雄也变身成一个安全代理,让大雄的代理工作在比如1080口上,然后我们把大雄代理映射给哆啦A梦的9000。代码如下:
rem 在大雄上执行
rem 大雄开设加密代理
rem gost -L socks5://用户名:密码@ip地址:端口号 这里使用鸳鸯作为用户名
gost -L socks5://yuanyang:521@:1080
rem 在哆啦A梦身上留下一个大雄龙头,端口号9000,对应大雄的代理服务
gost -L=rtcp://:9000/大雄计算机:1080 -F=socks5://哆啦A梦:代理口
这时哆啦A梦的9000端口是什么呢?其实他就是一个代理服务器,只不过你通过密码账号连接这个代理后,会直接连接到大雄的电脑上。
通过上面的过程,其实大雄的工作已经完成了,这里我们让静香接回大雄龙头,看一下如何实现。代码如下:
rem 在静香上执行
rem 接回大雄龙头,注意他在哆啦A梦的9000上
gost -L=tcp://:8080/大雄计算机:80 -F=socks5://yuanyang:521@哆啦A梦:9000
这里有个问题,就是大雄计算机:80这里地方到底应该怎么写,毕竟哆啦A梦的地址我们知道,大雄计算机的ip地址谁知道呀,其实这里直接写127.0.0.1就可以了,为什么呢?因为**-F=socks5://yuanyang:521@哆啦A梦:9000**这一套参数已经告诉我们,我们最终连入的计算机就是大雄自己的计算机,所以此时在看L参数的时候,我们把主体或者视角应该放在大雄计算机的角度上,简单说我们把-L=tcp://:8080/大雄计算机:80,这样理解:
参数 | 理解 |
---|---|
-L=tcp://:8080 | 把后面参数中的地址和端口,映射或者挂接到静香的电脑上8080端口 |
/ | 分隔符,忽略 |
大雄计算机:80 | 把代理服务器,也就是大雄可以访问的某一个地址的某一端口映射给静香,注意这里是的地址是大雄计算机或者代理计算机他网络中的某一个地址,不是静香网络中的某个地址,千万不要混淆了,在写这个参数的时候,视角必须站在代理服务器所在的网络内,而恰好大雄计算机就是代理计算机本身,所以可以直接写成127.0.0.1:80 |
最后我们用一张表,来整合一下所有的过程:
顺序 | 计算机 | 执行语句 | 说明 |
---|---|---|---|
1 | 哆啦A梦 | gost -L socks5://:1080 | 开设一个代理 |
2.1 | 大雄 | gost -L socks5://yuanyang:521@:1080 | 大雄开设一个加密代理 |
2.2 | 大雄 | gost -L=rtcp://:9000/大雄计算机:1080 -F=socks5://哆啦A梦:代理口 | 大雄把自己的代理挂到哆啦A梦的9000上,我们称之为大雄龙头,其实就是大雄的代理服务器入口 |
3 | 静香 | gost -L=tcp://:8080/127.0.0.1:80 -F=socks5://yuanyang:521@哆啦A梦:9000 | 静香连接大雄龙头,或者说使用大雄代理,并将大雄的80端口并映射到自己的8080端口上,自此静香只要访问自己的8080端口,就能看大雄给他做的网站了 |
最后,还有一个静香龙头的问题,没有给出答案,你是不是正跃跃欲试的想帮助一下静香呢?哈哈