Monthly Archives: February 2019

内网穿透:在公网访问你家的 NAS

家里 Nas 中安装了一系列服务,如果外网访问不了,手机上连不上,就十分不方便。所以我们需要内网穿透,方法主要有两个:动态域名和反向代理,下面对比一下: 动态域名 最早期的方法,要求家中拨号网络有一个外网 ip,每次断线拨号虽然 ip 变了,通过定时请求动态域名提供商的一个接口,把域名指向改成你最新的外网地址,这样其他地方就可以通过域名访问你家里的 IP 了。 一般动态域名路由器都支持设置,不支持也没关系,你家里的服务器的定时请求一次 DDNS 服务商接口即可,比如 no-ip 的 ddns.net 域名更新: https://USER:PASSWD@dynupdate.no-ip.com/nic/update?hostname=test.ddns.net 在家里服务器的 crontab 中设置每 15 分钟 curl 访问一下上面的地址,把用户名密码和hostname替换成你申请的域名,即可更新。 最后家中路由器需配置端口转发,比如把外网 ip 的 443 端口转给内网服务器的 443 端口。 这是最廉价的解决方案,基本没成本,各类 DDNS 服务商也是免费的。唯一问题是当 IP 更新后,最长可能需要 15 分钟才能更新域名指向(更新接口调用快会被 ban),再算上各级 … Continue reading

Loading

Posted in 未分类 | Tagged | 6 Comments

SSH 命令的三种代理功能(-L/-R/-D)

ssh 命令除了登陆外还有三种代理功能: 正向代理(-L):相当于 iptable 的 port forwarding 反向代理(-R):相当于 frp 或者 ngrok socks5 代理(-D):相当于 ss/ssr 如要长期高效的服务,应使用对应的专用软件。如没法安装软件,比如当你处在限制环境下想要访问下某个不可达到的目标,或者某个临时需求,那么 ssh 就是你的兜底方案。 正向代理: 所谓 “正向代理” 就是在本地启动端口,把本地端口数据转发到远端。 用法1:远程端口映射到其他机器 HostB 上启动一个 PortB 端口,映射到 HostC:PortC 上,在 HostB 上运行: HostB$ ssh -L 0.0.0.0:PortB:HostC:PortC user@HostC 这时访问 HostB:PortB 相当于访问 HostC:PortC(和 iptable … Continue reading

Loading

Posted in 未分类 | Tagged | Leave a comment

别让 cd 浪费你的时间

终端下工作最烦躁的就是路径切换,没有自动路径切换的帮助,就像在泥里走路,于是有了各种 autojump / z / fasd 等工具来提升路径切换的效率,今天向大家介绍一个更好用的工具:z.lua,用熟练了以后就像终端里溜冰,路劲切换从此指哪打哪。 z.lua 是一个会学习你使用习惯的 cd 命令,它会跟踪你在 shell 下访问过的路径,通过一套称为 Frecent 的机制(源自 Mozilla),经过一段简短的学习之后,z.lua 会帮你跳转到所有匹配正则关键字的路径里 Frecent 值最高的那条路径去。 正则将按顺序进行匹配,”z foo bar” 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。 特性说明: 性能比 z.sh 快三倍,比 fasd / autojump 快十倍以上。 支持 Posix Shell:bash, zsh, dash, sh, ash, busybox 等等。 支持 Fish Shell,Power … Continue reading

Loading

Posted in 随笔 | Tagged | 4 Comments

十行代码实现命令行书签

路径书签/别名,用来给目录取个名字,要用时快速跳转,它不是用来代替:z.lua / z.sh / autojump 这类第一梯队的 cd 辅助工具的,而是作为他们的一个补充。 先前我想找个现成的路径书签的小插件,找到这个:pm 把现有目录添加成书签要: pm add my-project 跳到这个书签对应的目录要: pm go my-project 然后列出所有书签要: pm list 删除书签要: pm remove my-project 我又看了好几个书签软件,都大同小异,又难用,实现又啰嗦,这玩意儿居然写出 500 行以上的代码来,真是匪夷所思。所以我打算用十行代码实现一个更优雅的书签功能。 目标1:少打字 同样一个功能多打一个字母,做一千次就多打了 1K 的内容,能省则省,我不明白为什么这些插件做的都那么啰嗦,输入完命令名还得再输入 add/remove/go/list 之一的参数,然后才是书签名,要我来做,我会把命令名起短一点,比如叫做 m : m # 列出当前所有书签 m foo … Continue reading

Loading

Posted in 编程技术 | Tagged , | Leave a comment