家庭NAS DIY经验和笔记 — 公网共享(FTP vs SFTP vs FTPs vs WebDAV)和dns缓存

前面写了两篇:

#原创新人# 升级6硬盘NAS DIY经历和经验

升级6硬盘NAS DIY经历和经验 — 内网穿透篇FRP

内网穿透后远程桌面已经很开心了,难点搞定了后就是一项项服务了,最最重要的服务就是文件的共享,很多其他服务在没搭建前只要有文件共享都是可以暂时顶替的,所以它太重要了。这里对比一下现下流行的几个公网internet文件服务,内网的直接文件共享,老掉牙就不提了哈。

FTP:这个东西谁人不知谁人不晓,曾经互联网的半边天啊,那个时候什么bt、磁力链、迅雷都还在蛋蛋里哈哈。 😀 可是作为五十多岁的老爷爷,在这黑客肆虐的互联网里真的是若不经风,而且速度不理想,用过的同学应该记得,打开一个目录都要一下下才行,没有嗖嗖的那种快,所以它排到最后,第一个拿来说是对它的致敬。

FTPS:作为ftp的后继者,也是互联网ssl时代的必然产物,传输都是加密的,缺点同上,相比之下安全当然是ssl下大大加强了。不过对于ssl,最近真的事情好多,openssl blood事件爆发,那么多网站沦落也不那么安全了,而且因为依赖ssl,所以还需要ssl证书才能布置服务端,因为这个原因我从来没有架设过它,拿出来说实在有不少人在用。

WebDAV:用这个的人就更多了,一直指导它不安全,想想加上ssl试试,毕竟好多公司都在用它。一定要上ssl哦,否则分分钟变肉鸡。它实在http协议上扩展的,对文件共享那是融入dna里的,同样也摆脱不了http不安全的一面,还有就是状态不可保持。花了点时间配置起来了,需要一个web服务器,微软的iis还会专门提醒你它不安全建议和ssl搭配使用。优点是:因为原生对文件共享的支持,各种顺滑的体验有木有,秒开有木有,一度用的不亦乐乎。缺点:放弃它安全不是主要的问题,毕竟还没发生嘛对嘛,主要是对大文件的支持太差,默认居然只有几MB的文件都不行,闻到死还限制了50mb的大小,跟别说断点续传了。

SFTP:说到这里可能就会想,如果像WebDAV一样快,又能传大文件,还有断点续传就好了,没错这就是今天的主角,sftp,跟ftps的区别是它支持ftp的指令但实际上是用的ssh,ssh有Linux的经验的都知道,它是现在的几个安全堡垒之一,如果关闭了密码登录,就连暴力破解都拿它没办法。它没有上面提到的任何缺点,而且安全,快速,下面是使用步骤。

1 搭建ssh服务器: sudo apt install openssh-server -y

2 用另一台linux或者mac使用ssh-copy-id生成私钥id_rsa,这步请自行百度,生成后拷贝下来:scp root@123.123.123.123:/root/.ssh/id_rsa ~/

3 保存好这份文件,别人拿去了可就可以登录你的服务器了哟。建议使用完就删掉。

4 iphone上的使用,打开itunes链接手机,打开app的文件共享,比如photosync,拖入id_rsa,断开链接后在app内即可配用id_rsa登入凭据的sftp了。

至此,从任何地方都可以愉快的分享咱nas的文件了。

不过在家里刷照片时感觉速度没有以前那么嗖嗖的,当然了,因为要去frps服务器上绕一圈,跟局域网是不能比的。其实从时间上说,咱70%的时间都是在家和公司里度过的,公司里已经不可能在快了,那么在家里,就靠着nas还要绕一圈就说不过去了。

解决办法:dns解析+端口转发

dns解析,做法是在nas上的ubuntu搭建一个dnsmasq服务,接管路由器第一个dns解析。这样穿透时那个访问公网ip的域名比如:home.xxx.com即可转向内网的一台机器,而不必出去绕一圈,起到加速的目的。同时这个dnsmasq还可以开启dnscache,本来也打算架设这个东西的,加速效果感受得到,请求缓存其实浏览器已经做的非常到位了,效果有限,有的路由器支持请求缓存可以打开对比一下。dns缓存就差很多了,浏览器dns缓存有限,nas不仅缓存量大,而且可以异步的更新缓存。效果就是每个请求分分钟省下几百ms。现在从手机app到看视频哪个不要dns解析,加起来就多了。现在好多路由器也有这个组件,可惜俺的小梅林没有,所以。。。同时它也可以解决dns劫持的问题,需要的自行百度哦。

1 安装dnsmasq,只有18kb,有木有,有木有这小又如此大用的东西:sudo apt install dnsmasq -y

2 编辑文件/etc/dnsmasq.conf在最后加下面,后面的ip可以换ipv6,所以呵呵你懂的。cache可以设置大一点,dns几乎很少更新的,缓存大了后命中率很高,加速就更明显了。

address=/home.xxx.com/192.168.1.x

cache-size=8192

3 重启dnsmasq,让配置生效:

service dnsmasq restart

4 端口转发,这里有点复杂,依次执行下面命令,只要记住替换下面命令中的ip即可。大概过程是打开iptable的设置,允许ipv4转发,设置本机转发端口,最后查看是否成功。

sudo -i #切换root用户

sudo apt install iptables-persistent -y #安装iptables持久组件

sudo nano /etc/sysctl.conf #编辑系统配置

net.ipv4.ip_forward=1 #上面文件中找到这一行,删除注释

sudo sysctl -p #使上面的配置生效

sudo sysctl –system

iptables -t nat -L #查看当前nat规则

for i in $( iptables -t nat –line-numbers -L | grep ^[0-9] | awk ‘{ print $1 }’ | tac ); do iptables -t nat -D PREROUTING $i; done #这行不一定需要,用来删除所有nat规则的,执行一下可以清空

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.123  –dport 6666 -j DNAT –to 192.168.1.123:22 #将123端口转发到22端口,这条规则本机无法使用,如果要local使用需要用output指令

iptables -t nat -L #查看是否生效

再次检查家中路由器的dns第一个地址是否改为dnsmasq的ip,最后在不更改photosync设置的情况下回家后会自动直连家里的nas,看看更新速度是否提升了。