情况说明:在公司无固定IP,不能做DDNS,也不能搭建VPN,更没有jumpserver的情况,面对肺炎疫情。在家办公我要如何远程开发远程调试?
当时计划是这样的,
- team viewer:公司不能直接连接,那我使用 team viewer 呗,但是!你让我用这玩意儿远程连接公司电脑写代码我是拒绝的,mac和windows键盘布局不一样,对我来说不够友好,而且开着ss的情况可能会出现商业行为检测!
- frp:利用frpc在公司部署内网穿透,自己使用vps做frps,在公司某台属于我的测试服务器上部署python开发环境,然后利用
vscode
的remote ssh
功能远程开发调试就好了,但是也只能连终端服务器啊,我不可能把相关需要的web页面全代理出来,这个也不好使。 - nps:使用 比
frp
更为强大的工具nps
,frp
中有的功能nps
有,frp
没有的他也有,而且nps
还提供web远程管理功能,岂不美滋滋。依赖于nps
提供的socks5
我们可以达到类似VPN
的效果,在家即可访问公司整个局域网。
什么是socks
摘自维基百科
SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是"SOCKetS"的缩写[1]。 当防火墙后的客户端要访问外部的服务器时,就跟SOCKS 代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。 这个协议最初由David Koblas开发,而后由NEC的Ying-Da Lee将其扩展到版本4。最新协议是版本5,与前一版本相比,增加支持UDP、验证,以及IPv6。
废话不多说,直接进入正题。
部署nps
nps官方文档:ehang-io.github.io/nps/#/?id=n…
nps需要部署在你的拥有固定IP的外网服务器上,例如:阿里云ECS等。
-
下载最新版本与你同平台的server包(感谢golang的跨平台性):下载地址
# wget https://github.com/ehang-io/nps/releases/download/v0.26.1/linux_amd64_server.tar.gz
-
解压包文件
# mkdir -p /opt/nps # tar -zxvf linux_amd64_server.tar.gz -C /opt/nps # cd /opt/nps
-
修改配置文件
# vim conf/nps.conf
修改内容如下
... #HTTP(S) proxy port, no startup if empty http_proxy_ip=0.0.0.0 http_proxy_port=8089 # https_proxy_port=54443 # 由于我使用nginx做统一web代理,所以不需要他自己的https # https_just_proxy=false # #default https certificate setting # https_default_cert_file=conf/server.pem # https_default_key_file=conf/server.key ##bridge bridge_type=tcp # 客户端与服务端连接方式kcp或tcp bridge_port=10181 # 服务端客户端通信端口 bridge_ip=0.0.0.0 # Public password, which clients can use to connect to the server # After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file. public_vkey=akiya # 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式 ... #web web_host=a.o.com web_username=akiya # web界面管理账号 web_password=akiyapwd # web界面管理密码 web_port = 58080 # web管理端口 web_ip=0.0.0.0 web_base_url= web_open_ssl=false web_cert_file=conf/server.pem web_key_file=conf/server.key
-
安装nps
# ./nps install
-
启动
# nps start
- 与nginx配合使用: nps与nginx配合
启动完成后即可通过浏览器访问。
部署npc
npc客户端部署在待访问的内网中任意服务器,当前服务器需要可以访问内网资源与能够连接公网。
-
下载最新版本与你同平台的client包(感谢作者开源如此美好的软件):下载地址
# wget https://github.com/ehang-io/nps/releases/download/v0.26.1/linux_amd64_client.tar.gz
-
解压包文件
# mkdir -p /opt/nps # tar -zxvf linux_amd64_client.tar.gz -C /opt/nps # cd /opt/nps
-
修改配置文件
# vim conf/npc.conf
修改内容如下
[common] server_addr=nps.akiya.com:10181 # 服务端ip:port conn_type=tcp # 与服务端通信模式(tcp或kcp) vkey=akiya # 服务端配置文件中的密钥(非web) auto_reconnection=true # 断线重连 crypt=true # 是否加密传输(true或false或忽略) compress=true # 是否压缩传输(true或false或忽略) # ssh 私密连接 [ssh_secret] mode=secret password=akiya target_addr=192.168.1.142:22
-
注册到系统服务(开机启动、守护进程)
# ./npc install -config=/config/npc.conf)
-
启动
# npc start
配置socks5
待 nps
与 npc
启动完成后,访问 nps web
页面可以看到客户端列表中已有我们刚添加的 npc
了
然后点击编辑 按钮添加basic 认证
保存后,再在 socks5代理
中添加一个新的 socks5
ID填写为你 npc
ID,端口为你当前 socks5
访问端口。
连接socks5
以上流程都完成后我们就可以使用客户端工具通过 socks5
访问目标内网了。
- 下载proxifier
-
注册码:
-
L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition) # 免安装版本
-
5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition) # 安装版本
-
P427L-9Y552-5433E-8DSR3-58Z68(MAC) # mac版本
-
-
添加到 proxifier
- 愉快的连接内网,现在就可以在浏览器或者终端中愉快的连接内网服务了
标题:在家办公如何优雅的访问公司内网?
作者:akiya789
地址:akiya789.cn/articles/20…