2022年更新:
已经采用更灵活性能更强的三层隧道了。
前言
虽然IPv6正在逐渐普及,可能会有助于用户获得公网IP,但是运营某学校校园网的电信并未打算为该校师生提供IPv6,公网IP更加无从说起,所以目前来说,FRP仍然是生活中非常常用且不可取代的。然而一些FRP服务商的免费服务中提供的隧道十分少,稳定的花生壳只提供了两条隧道,而SakuraFrp虽然提供了5条但是没有前者那么稳定,虽然2-5条隧道也不是不能用,但是对于RDP,SSH,web等一众服务来说是不够的,那么有没有办法仅用一条隧道就访问内网的多个服务呢?
答案是肯定的:我们可以在隧道搭建SOCKS5来实现。
SOCKS5是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,说白了就是当通过FRP连接到SOCKS5服务端后,客户端就相当于直接进入服务端所在的内网了。
部署服务端
环境
系统:Ubuntu Server 20.04.2 LTS
安装Shadowsocks服务端
在Ubuntu下可以通过Nodejs快速部署Shadowsocks服务端,首先安装Nodejs和npm:
mportant;">
sudo apt update
sudo apt install nodejs npm
安装pm2:
npm -g i pm2
安装shadowsocks:
npm -g i shadowsocks
此时应该会提示安装路径,如/usr/local/lib/node_modules/shadowsocks/config.json
用Vim打开这个配置文件,如果这个文件是空的就写入如下信息:
{
"server":"0.0.0.0",
"server_port":8083,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"myPassword",
"timeout":600,
"method":"aes-256-cfb"
}
易知访问端口为8083
,密码为myPassword
,算法为aes-256-cfb
,此时应该设置一个能抵御社工的强密码,否则黑客将能轻易地通过简单密码进入内网!
部署完成后,可以启动服务:
pm2 start /usr/local/lib/node_modules/shadowsocks/bin/ssserver
但是这样部署并不能开机自启,我们可以通过systemd来实现:
首先新建一个服务并编辑:
sudo vim /etc/systemd/system/ss.service
输入以下内容
[Unit]
Description=Shadowsocks Client Service
After=network.target
[Service]
User=Username
Type=forking
ExecStart=pm2 start /usr/local/lib/node_modules/shadowsocks/bin/ssserver
[Install]
WantedBy=multi-user.target
其中Username为用户名
保存之后启用服务并启动:
sudo systemctl enable ss.service
sudo systemctl start ss.service
重启并测试
pm2 ls
如果出现shadowsocks的服务则部署成功
部署FRP服务
部署的客户端及教程在各大服务商都有提供,安装好FRP服务后将本地端口指向上文配置文件中所配置的访问端口即可。值得一提的是,因为某些原因花生壳的SOCKS5隧道仅对付费用户开放,而我们使用内网穿透的场景多为TCP协议为主,所以我们可以新建一条TCP或UDP隧道(取决于实际需求)来指向shadowsocks的端口,SakuraFrp也类似,新建TCP/UDP隧道即可。
客户端
客户端环境
操作系统:iOS/iPad OS 14.5,macOS Big Sur 11.2.1
客户端部署
iOS在非国区商店都能下载Shadowrocket,支持直接在armMac上运行,Windows和安卓可以在各大使用ss协议的机场下载客户端,在客户端中填入FRP的公网地址和端口,密码和算法按照配置文件来填写,启动代理即连接内网。后续可以使用PAC进行进一步操作,这里不再阐述。
设置HOSTS
在上述步骤完成后,虽然理论上已经进入内网,但是仍然无法通过原局域网IP连接对应主机,这时候我们需要在服务端设置hosts:在hosts中输入内网IP 自定义域名(最好选择有代表性且不与广域网的域名重复)
如:
192.168.1.1 a.com
这时候我们在外网使用ss连接,通过a.com即可访问内网中192.168.1.1的主机。通过ping可以发现在SOCKS5的隧道中,各个内网主机的IP被分配了E类IP地址:240.0.0.0-255.255.255.254,而每次连接时各个主机的IP都不一样,目前也没有搞懂这个IP的分配机制,所以就先用hosts来指定IP。
在隧道中ping内网主机绑定的域名
本文链接:https://www.kinber.cn/post/4060.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: