Winse Blog

走走停停, 熙熙攘攘, 忙忙碌碌, 不知何畏.

科学上网(续)

到新的环境就会遇到新的问题,需要不断的学习更新来适应新的环境。上网也是一样,工作地点和家里存在了一道鸿沟。过去断断续续的有一些解决的方式,但是总是有点间接。

上周和同事讨论到在家访问公司服务器的方式时,可以通过花生壳的DDNS来实现域名动态绑定,相当于了把家里的宽带看做一个公网IP,花生壳实时的把域名解析更新为最新的IP。

其实有了公网IP绑定域名后,就可以在公司访问自己的域名(绑定到了家里的IP),公司连自己域名做一个 反向代理 ,然后就可以在家直接访问公司的环境了。

但是查了下对于花生壳的口碑都不咋的,其实只要能自动的更新绑定域名和宽带的IP(电信宽带给的是动态IP,使用动态域名绑定),和花生壳的效果是一样。然后在 github 查到了 aliyun-ddns 可以同时定时检测来更新阿里云上的域名解析。

首先通过域名映射到家里电信宽带的公网IP,ddns用来适配电信IP的动态分配;
然后在家里局域网的一台机器开个SSH的服务;
再在家里路由上做端口转发到ssh主机。这样就可以在公司通过 ssh -p port my-domain 连回家了。

DDNS配置:映射域名到自己的公网IP

aliyun-ddns 老版本有些复杂,我在此基础上一个本地命令行的版本 ,直接运行一个脚本就可以更新域名解析了:

1
./client.sh myhome.winseliu.com

注:默认电信宽带给你分配的内网IP的,你可以打10000号要他们给你分配改成公网IP。

本地环境配置

  • 本地SSHD配置
1
2
winse@DESKTOP-ADH7K1Q:~$ sudo dpkg-reconfigure openssh-server
winse@DESKTOP-ADH7K1Q:~$ sudo service ssh start
  • 无秘密登录配置

为了安全,通过公网的SSH访问最好通过秘钥登录,把SSH密码登录的方式给关掉。

1
winse@DESKTOP-ADH7K1Q:~/.ssh$ cat /business/server/id_rsa.pub >>authorized_keys
  • 本机防火墙开放22端口

参考 开放windows服务器端口—–以打开端口8080为例

  • 路由器端口映射配置

穿透:配置反向代理

在公司(机器)访问自己的域名,使用ssh的 -R 反向代理参数连接在家里电脑,在家里电脑新建一个5432的端口绑定(数据转发)到服务器的5432端口。这样当你在家电脑连本地的 127.0.0.1:5432 就相当于连接了服务器的 5432 端口。

1
2
/usr/bin/autossh -M 0 -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=no \
-N -R 5432:localhost:5432 -i ~/.ssh/id_rsa autossh@myhome.winseliu.com 

当autossh连接太慢、并且SSH提示信息一直不出来,你完全有理由怀疑本地端口被占用了!!查看本地端口状态:

1
2
3
C:\Users\winse>netstat /?

C:\Users\winse>netstat -ano |findstr 5432

如果端口被占用了,需要去任务管理器中关掉对应PID的程序。

小结

速度比 teamviewer vpn 的方式快狠多狠多!!这个10000号值得打,这个ddns值得一试。

后记

说说 VS Code调试

在写脚本bat/sh的过程中,需要用到nodejs的调试。

使用Windows Ubuntu中安装的Node:

1
"useWSL": true

https://code.visualstudio.com/docs/nodejs/nodejs-debugging

注意:这种外部启动的方式,会通过bash.sh运行node,所以就算停止调试后,Node进程还是一直存在的!!!需要通过任务管理器关闭。

–END

Comments