西区代码小仓库 - 网络
type: channel
link: https://lisper517.top/category/Internet/
description: 计算机网络技术
items: 使用r730xd组建NAS及AIO
items: 小米CR6609路由器刷pandora与breed
items: IPv6与DDNS
items: Google云的免费使用
items: Windows系统开启SSH
items: Samba, ftp与webdav
items: AX6S路由器固化SSH
items: 路由器与DDNS
items: Python，爬虫与深度学习（6）——爬虫详解（二）构建自己的ip池（简易版）
items: DNS与更换DNS

使用r730xd组建NAS及AIO
type: item
date: 2024-07-14T07:50:00+00:00
description: 步骤/目录： 0.raid介绍 1.背景介绍 2.r730xd的详细参数与扩展 3.esxi系统的安装 4.esxi虚拟机安装TrueNAS 5.esxi虚拟机安装Win10 6.esxi虚拟机安装Ubuntu 7.其它本文首发于个人博客https://lisper517.top/index.php/archives/1562/，转载请注明出处。本文的目的是使用r730xd组建NAS。本文写作日期为2024年7月14日，参考文章将会在正文中列出。0.raid介绍raid技术可以将多块物理硬盘合并成一个存储单位使用，比如说在电脑上显示为1个盘符。raid最大的作用是提升安全性或者读写性能。常用的raid如下（来自于 这篇文章 ）：RAID 0：条带化（数据分块）但没有冗余，提供较高的读写性能。 RAID 1：镜像，数据完全复制到另一个驱动器，提供容错能力。 RAID 5：条带化加分布式奇偶校验，提供数据冗余和读取性能。 RAID 6：类似于RAID 5，但提供更高级别的容错能力。 RAID 10：RAID 1+0，将RAID 1镜像组合成RAID 0条带化，提供较高的容错能力和读写性能。 RAID 50：RAID 5组合成RAID 0，提供较高的性能和容错能力。 RAID 60：RAID 6组合成RAID 0，提供更高级别的性能和容错能力。总的来说，追求简单就raid1（至少2块硬盘），追求速度就raid10（至少4块硬盘），raid1与raid10都只能使用一半的硬盘空间。想提高读取性能、空间利用率、容错率就raid50、raid60。另外需要注意的是，大量数据时，raid5硬盘恢复的失败率会上升。软硬raid的区别：（1）软raid不需要专门的硬件设备，可以在不同的操作系统中读写数据；缺点是消耗CPU、内存，高负载时性能不如硬raid。（2）硬raid需要专门的阵列卡，读写性能高；缺点是必须特定的硬件才能读写数据。另外一个重要的区别是，用软raid时硬盘无法作为系统盘，只有硬raid才能把系统盘也组raid。IT（initiator target）即直通模式，阵列卡只作为总线适配器，把硬盘直接交给操作系统处理，方便做软raid。一般是便宜的阵列卡支持IT模式。1.背景介绍在笔者之前的文章中，曾经用 Ubuntu + samba 的方式组建NAS，使用的硬件为 2盘位硬盘座 + 树莓派 + UPS （见 树莓派+Samba+frp搭建NAS（网络云存储） ），后来将树莓派改成了旧笔记本。这套配置的主要问题有：（1）树莓派的CPU不够强，旧笔记本的CPU可以、但散热不行，所以都无法运行一些其它占资源的东西，比如模拟器多开。（2）扩展性的限制，硬盘座需要通过USB3.0接到树莓派或者笔记本上，想再加硬盘就要再买硬盘座，但USB接口是比较少的。如果换大型硬盘柜则USB接口又容易发热。（3）达不到AIO的要求。AIO即all in one，用一台主机实现NAS、远程云游戏主机、网页服务器等多种功能，树莓派性能孱弱，旧笔记本又没有雷电接口（不能外接显卡）。综合下来，最好的选择是换一台淘汰的存储服务器，能插显卡的。买旧服务器唯二的缺点是：风扇噪音大（一般在60-100dB），耗电高。经过一系列比对，笔者最终在黄鱼上自提购买了Dell的r730xd，原因如下：（0）github上有针对Dell服务器的风扇调节工具，可以把风扇噪音降低到40dB，放在卧室也不影响入睡。作为对比，耳语大概在30-35dB。（1）耗电量，与卖家当面沟通，双CPU（2630L）、12硬盘，正常跑一些服务的情况下，功率为200W，不关机的话每月144度电，可以接受（按0.5计算，约72元/月，和便宜的云服务器差不多）。（2）保有量大，相关资料多，问题好解决，而且Dell的手册也比较详细。（3）工业设计成熟，看起来有一种信息技术革命的美感，赏心悦目。r730xd在2023年左右经过了一些炒作，价格略上涨，涨价前准系统据说只要￥650。笔者购买时￥1550，胜在卖家已经调好了，包括2颗2630L的CPU，4根2133频率的16GB、ECC内存，1张双千兆电口+双万兆光口的网卡（intel X520/I350），H330 mini阵列卡，1个750W电源，3张PCIe扩展卡，iDrac已授权，另外￥400收了卖家的单风扇1050ti。如果不是自提，最好在发货前让卖家拍照，因为对于准系统的定义不太一样。另外自购了2690v4的CPU（￥330），两个千兆光转电模块（￥150），750W电源1个（￥62），额外一张H330 mini卡备用（￥50，后来发现自带的H330 mini已经刷了直通模式，就买了个没刷直通的），硬盘用东芝的N300-16T（618活动￥1889）。2.r…

小米CR6609路由器刷pandora与breed
type: item
date: 2024-02-08T03:24:00+00:00
description: 步骤/目录： 1.准备工作 （1）另一台路由器 （2）CR6609降版本 （3）下载文件 2.开启SSH 3.连接SSH 4.刷入pandora 5.刷入breed 6.刷入AX1800固件本文首发于个人博客https://lisper517.top/index.php/archives/554/，转载请注明出处。本文的目的是在小米CR6609路由器上开启SSH，刷入pandora、breed固件，最后刷Redmi AX1800的固件。本文使用的方法应该也适用于所有CR660X的路由器。本文写作日期为2024年2月8日，主要参考了 参考文章一 和 参考文章二 。1.准备工作（1）另一台路由器需要另一台刷好openwrt的路由器（最好reset一下）。也可以用虚拟机，但是后面的流程可能有一些不同，笔者没有试过。（2）CR6609降版本本文使用的开启SSH的方法适用于1.0.103及以下的版本，所以最好回退CR6609版本。笔者实验时不知道当前固件版本，也没找到旧版本固件，测试时CR6609后台显示版本号6.0.xxx，这个6开头的版本可能对应某个1.0.103以后的版本。（3）下载文件两位原贴主提供了网盘：百度网盘一 （提取码: love）百度网盘二 （提取码: pvg4）阿里云盘下载3个网盘中的所有东西。或者直接下载 笔者提供的压缩包 。2.开启SSH笔者在每一步操作后会加上自己的理解，不一定对。openwrt路由器通电并用LAN口连接电脑，用WinSCP将 xqsystem.lua 文件上传到 /usr/lib/lua/luci/controller/admin 下，注意用SCP协议。（上传脚本）网页登录openwrt后台，在 Network - Interfaces 中 Edit 第一个 LAN ，将 IPv4 address 改为 169.254.31.1 ；然后关闭DHCP功能，该 LAN 的 DHCP Server - General Setup 中，勾选 Ignore interface ，最后 Save & Apply 。这之后需要换到 169.254.31.1 以操控该路由器。（ 169.254.31.1 可能是小米路由器留下的后门）在win10电脑中， 设置 - 网络和Internet - 状态 - 更改适配器选项 中，选择连接到openwrt路由器的网卡，右键单击，选择 属性 - 网络 页，找到 Internet 协议版本 4 (TCP/IPv4) ，更改它的属性，从 自动获得IP地址 改为 使用下面的IP地址 ， IP地址 填 169.254.31.3 ， 子网掩码 为默认的 255.255.0.0 即可。（保证等一下CR6609获得相同的IP）在 Network - Wireless 中，更改默认的名为 OpenWrt 的Master网络，ESSID（wifi名）改为 abc ， wifi密码改为 12345678 ，最后 Save & Apply 。如果不只一个Master网络（比如一些路由器有2.4G、5G两个甚至更多wifi），都需要改一下，但是各个wifi不要重名。（CR6609需要连接到openwrt路由器的wifi。同时确保等下没有CR6609之外的其它设备连接openwrt路由器）浏览器访问 http://169.254.31.1/cgi-bin/luci/api/xqsystem/token ，返回如下：{"token":"; nvram set ssh_en=1; nvram commit; sed -i 's\/channel=.*\/channel=\"debug\"\/g' \/etc\/init.d\/dropbear; \/etc\/init.d\/dropbear start;","code":0}将电脑与openwrt的连接断开，电脑从 169.254.31.3 改回 自动获得IP地址 。openwrt路由器不要断电。（测试脚本。 ssh_en=1 表示ssh已经enable， "code":0 是成功的状态码）电脑与CR6609的LAN口连接，登录路由器后台。笔者的后台是 192.168.31.1 ，这里以及后续的后台IP请自行查看是否需要更改，比如其它的CR660X可能是 192.168.1.1 、 192.168.2.1 、 192.168.10.1 。浏览器的网址会变成：http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/home#router这样的形式。记住这个32位的stok（该stok在每次登录CR6609后台时都会变化）。浏览器访问：http://192.1…

IPv6与DDNS
type: item
date: 2024-01-03T16:17:00+00:00
description: 步骤/目录： 1.背景介绍 2.测试IPv6 3.购买域名，DNS解析 4.安装ddns-go 5.端口被封禁的解决方法 6.安全措施 7.进阶搭配使用本文首发于个人博客https://lisper517.top/index.php/archives/246/，转载请注明出处。本文的目的是使用 IPv6 + DDNS 以访问内网ubuntu机器。本文写作日期为2024年1月4日，主要参考了 这篇文章 。1.背景介绍在以前的文章中，笔者介绍过frp，也介绍过DDNS。通过frp，购买一台有公网IPv4地址的云服务器，可以将内网机器开放到公网，还可以搭配NPM给内网机器分配不同的子域名。缺点有：（1）服务器成本；（2）如果被封禁80、443端口，需要换ip，但除了vultr等少数厂商外，很多厂商都不能免费换ip；（3）受服务器网速限制，家里的上传带宽一般都不能跑满。优点则是：（1）内网机器不直接暴露端口，获得了一层额外的保护。DDNS（动态DNS），如果你有幸获得了公网IPv4地址（前几年的电信据说比较容易获得），一般是一个动态的公网v4，每次拨号都会变化。通过DDNS，一个固定域名可以与你每次都不同的v4地址绑定，从而方便使用。参考 路由器与DDNS 。随着IPv6的普及，现在基本上一半的网址都能通过v6访问（手机基本上都支持v6）。由于v6能提供的地址太多，协议也比较新鲜，美国暂时没有管制v6发放，现在使用v6的机器都能分配到公网v6地址。但是v6地址太长且经常变化，使用不方便，所以需要搭配DDNS（动态DNS）使用。最后需要提醒，v6 + DDNS 的方案会将内网机器直接暴露到公网，所以一定要设置好防火墙。对于linux系统，这里推荐ufw防火墙（见 ufw简介与树莓派安装ufw ）和fail2ban端口封禁（见 Fail2ban提升服务器安全性 ）。2.测试IPv6第一步确认自己的路由器、光猫能否访问IPv6。先到光猫、路由器后台找到v6相关设置，把v6打开，如果路由器自带v6防火墙可以暂时先打开。然后访问 IPv6 连接测试 和 ddnspod提供的v6检测 （如果有代理，此时需要关闭代理），正常情况下会显示电脑的v6地址，并且结果相同。接下来最好把光猫改桥接，因为光猫的性能较差，而且光猫的防火墙喜欢拦截入站的v6请求。直接打电话给运营商转人工服务，要求光猫改桥接，几分钟就好了。如果不知道自己的宽带账号密码，可以顺便问一下。接着到主路由管理页面，上网方式从DHCP（或者静态IP）改到PPPoE，输入宽带拨号的账号密码即可。另外，ipv6、ipv4的DNS也可以手动改一下，以缓解DNS污染，这里提供cloudflare和google的：cloudflare: 1.1.1.1；1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 google: 8.8.8.8；8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844路由器PPPoE能成功上网后，查看路由器的v6地址，复制到 IP查询 ，看一下路由器是否公网v6，也可以在cmd中 ping -6 你的v6地址 能否ping通，不是的话可以先关闭路由器防火墙，还是不行的话问一下运营商。最后，在浏览器访问路由器的v6地址（注意网址栏的v6地址要用 [] 括起来），应该能看到路由器的登录界面。显示 ERR_CONNECTION_REFUSED ，那一般是防火墙的问题。这里如果看不到也没关系，后面的方案是把内网的其它机器开放而非路由器开放到公网。3.购买域名，DNS解析以下购买域名的厂商称为域名厂商，提供DNS的厂商称为DNS厂商。购买一个自己的专属域名，最便宜的依然推荐 namesilo ，因为没什么套路，域名续费也很便宜。如果不会用namesilo，也可以在cloudflare、阿里云、腾讯云等购买，当然可能会稍微贵一点。普通的top域名一般一年在￥9.9-99比较合理。如果在namesilo购买域名，还要设置一下DNS解析，因为namesilo的DNS不是很给力。把DNS服务器修改到DNS厂商，笔者最推荐cloudflare。然后转到DNS厂商，把域名解析到路由器的v6地址进行测试（cloudflare），等几分钟（解析记录需要几分钟扩散），浏览器访问该域名，也许能看到路由器的登录页面（看不到也没关系）。最后，登录到你的DNS厂商，获得一个token令牌。以阿里云为例，在头像处的下拉菜单中找到AccessKey，创建一个，保存好（忘记保存就再创建一个），AccessKey ID相当于用户名，AccessKey Secret相当于密码。各家DNS厂商可能有一些细小的区别，其它厂商可能叫toke…

Google云的免费使用
type: item
date: 2023-12-12T15:58:00+00:00
description: 步骤/目录： 1.背景介绍 2.前期准备 3.谷歌云免费试用 4.问题本文首发于个人博客https://lisper517.top/index.php/archives/93/，转载请注明出处。本文的目的是免费使用Google云服务器。本文写作日期为2023年12月13日。1.背景介绍2023年11月12日，阿里云出现了非常严重的大范围故障，涉及到了所有地区的所有产品，据不可靠消息，是因为裁员太狠，导致降本增笑。阿里云之前也出过一些小范围的故障，但这次确实影响最大，让人不得不考虑其它备用方案。谷歌云作为old money家的儿子，实力毋庸置疑，前几年还推出了免费试用一年的服务，具体来说是注册后送$300、可在一年内使用。目前免费使用的时间降到了3个月，但也很不错。另外，它的e2-mirco能一直免费（限俄勒冈、爱荷华、南卡，1GB出站流量，该出站流量不包括中国，所以到中国的流量钱需要另付？）。除了谷歌云，亚马逊的EC2（新用户限时免费1年）、微软Azure的B系列（也是限免1年）也可以练练手。长期使用的话，这几家都有费用计算器，稍微算一下就会发现有点贵。如果想长期使用云服务器，可以参考 VPS主机排行榜单 ，该榜单长期有效。搭建个人博客，推荐买香港或者亚洲服务器，最好能备案。阿里、腾讯云的香港服务器都限制网速3.75MB/s（国外厂商的服务器在国内连也差不多。一般非内陆服务器，白天可以，晚上都会有点卡），内陆服务器640KB/s，优点是不会被墙，有时活动价能低至90/年（日常香港最低24￥/月，1TB流量）；如果没赶上活动、又想尽快上手，可以选择一些老厂如Vultr（最低配512MB内存，500GB流量，$3.5/月），Linode（1GB内存，1T流量，$5。目前Linode日本优于Vultr日本），另外注意有些国外厂商是没有香港服务器的。综合各项性能来看，vultr服务器性价比很高，它的价格便宜，可以免费换区、换ip（因为是纯按时间收费，销毁、重开一台机器即可），唯一的缺点是从国内直连时有丢包（没有针对国内网络做优化。但是有优化的都没这么便宜），能满足日常建站、跨越的需求，可惜暂时没有HK地区。最后要提醒，有些新服务器厂商+超低价，贪便宜上车，就要随时做好厂商跑路的准备，只能短时间玩玩。2.前期准备（1）保证能达到翻越的状态。（2）注册一个谷歌账号（用谷歌浏览器就能注册），笔者注册的时候没什么困难，印象不深。没有的可以参考 这篇文章 ，大致是从QQ邮箱app尝试绑定google邮箱账号，然后就能顺利注册。（3）其次要有一张带Visa标（mastercard万事通、American Express美国运通也可以，但实用性、办理难度肯定Visa最好，因为Visa使用最广）的信用卡。一般的选择是申请银联、Visa的双标信用卡，在银行app上申请，寄到手后去网点面签即可，这个信用卡日常或者出国旅游、留学也可使用（但是办的时候注意问是否收转换费。比如你在日本消费，需要先从日元换美元再从Visa卡里扣钱，有些信用卡就要收转换费，一般是1.5%），已毕业工作的话应该比较好申请。如果是学生，可参考 这个视频 。注意现在能办的双标卡都是没有芯片的磁卡，很容易被复制、盗刷，发现被盗刷时要及时将卡冻结。3.谷歌云免费试用到 谷歌云官网 ，点击右上角的 免费开始使用吧 ，登录谷歌邮箱账号，选择香港或者其它地区，付款资料填信用卡号、卡的有效年月、卡背的末三位验证码即可。接下来购买服务就行了。如果不知道用云服务器干什么，可以先从Compute Engine的E2开始使用，它差不多就是国内云的轻量应用服务器。而且所有用户每个月都能免费用一台e2-micro实例（1核2vCPU，1GB内存），这个和＄300赠送金是分开的。对比之下，阿里云内陆1核CPU、2GB内存、40GB硬盘、5Mbps（640kb/s）网速，日常价￥145/月，必须有活动时买才划算（阿里云新人活动价有￥100左右1年的）。选择合适的配置，区域和可用区（区域是大区，以城市命名；可用区是城市里的分区，又分a、b、c共3个），开启实例，然后进行一些配置。需要提醒的是，如果想用GPT，不要选香港区域，因为GPT对香港IP不开放。没有特别需要时，选亚洲区域，延迟低。服务器设置可参考 Docker实践——如何查阅wiki百科及V2Ray 。4.问题笔者在使用谷歌云服务器时，PuTTY能连接，但WinSCP连不上，显示 No supported authentication methods available (server sent publickey) 。参考了 这篇文章 ，用MobaXterm解决了部分问题，可以从云服务器下载、但不能上传。暂时的解决方法是，对于小文件上传，先传到网站服务器上…

Windows系统开启SSH
type: item
date: 2023-05-05T02:31:00+00:00
description: 步骤/目录： 1.SSH简介 2.Windows系统开启SSH本文首发于个人博客https://lisper517.top/index.php/archives/84/，转载请注明出处。本文的目的是在Windows系统中开启SSH。本文实验日期为2023年5月5日，使用的电脑是家用台式机，win10系统。1.SSH简介以下内容来自 SSH 基本知识SSH（Secure Shell）是一种网络协议，用于加密两台计算机之间的通信，并且支持各种身份验证机制。它主要用于保证远程登录和远程通信的安全，任何网络服务都可以用这个协议来加密。历史上，网络主机之间的通信是不加密的，属于明文通信。这使得通信很不安全，一个典型的例子就是服务器登录。登录远程服务器的时候，需要将用户输入的密码传给服务器，如果这个过程是明文通信，就意味着传递过程中，线路经过的中间计算机都能看到密码。1995年，芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 设计了 SSH 协议的第一个版本，同时写出了第一个实现，即SSH1。写完以后，他就把这个工具公开了，允许其他人免费使用。SSH 可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议，所以大受欢迎，用户快速增长，1995年底已经发展到五十个国家的20,000个用户。SSH 1 协议也变成 IETF 的标准文档。1995年12月，由于需求越来越大，Tatu Ylönen 就成立了一家公司 SCS，专门销售和开发 SSH。这个软件的后续版本，逐渐从免费软件变成了专有的商业软件。1996年又提出了 SSH 2 协议（或者称为 SSH 2.0）。这个协议与1.0版不兼容，在1997年进行了标准化，1998年推出了软件实现 SSH2。但是，官方的 SSH2 软件需要付费，而且 SSH1 的有些功能也没有提供。1999年，OpenBSD（一个致力于提供免费、开源的类UNIX操作系统的组织） 的开发人员决定写一个 SSH 2 协议的开源实现，即 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本，那是当时 SSH1 最后一个开源版本。但是，OpenSSH 很快就完全摆脱了原始的官方代码，在许多开发者的参与下，按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供，以后又移植到其他操作系统，成为最流行的 SSH 实现。目前，Linux 的所有发行版几乎都自带 OpenSSH。现在，SSH-2 有多种实现，既有免费的，也有收费的，而 OpenSSH 无疑是最受欢迎的。SSH 的软件架构是服务器-客户端模式（Server - Client）。在这个架构中，SSH 软件分成两个部分：向服务器发出请求的部分，称为客户端（client），OpenSSH 的实现为 ssh；接收客户端发出的请求的部分，称为服务器（server），OpenSSH 的实现为 sshd。另外，OpenSSH 还提供一些辅助工具软件（比如 ssh-keygen 、ssh-agent）和专门的客户端工具（比如 scp 和 sftp）。需要提醒的是有些工具提供了便捷的SSH客户端管理，比如PuTTY，但它的ppk私钥与OpenSSH的私钥不通用，需要用它的puttygen工具转换一下。2.Windows系统开启SSH（1）开启sshd服务器在 开始-设置-应用-可选功能 里，在 已安装功能 中搜索 ssh ，一般来说win10默认安装了OpenSSH客户端，但是如上文所述，想通过SSH连接到win10电脑需要的是服务器。在 添加功能 中搜索 ssh 找到OpenSSH服务器并安装，然后在 C:\Windows\System32 中找到 cmd.exe ，将之创建一个桌面快捷方式，右键管理员启动，运行 net start sshd 开启sshd服务器。一般这时候会显示：发生系统错误 1058。 无法启动服务，原因可能是已被禁用或与其相关联的设备没有启动。这是因为sshd服务被禁用。在开始菜单旁边的搜索栏（放大镜）中寻找 服务 ，找到 OpenSSH SSH Server 和 OpenSSH Authentication Agent ，右键 属性 ，把 启动类型 从 禁用 改为 自动 ，再次 net start sshd 即可。显示如下：OpenSSH SSH Server 服务正在启动 . OpenSSH SSH Server 服务已经启动成功。如上设置完成后，sshd开机后都会自启动。（2）用户名与密码如果你用另一台win10电脑的cmd登录，输入如下命令：ssh 用户名@IP地址笔者更加推荐用PuTTY登录。但是不论用什么工具登录，有些时候可能会忘记用户名和密码。在 开始-文档 的上面有一个灰色头像图标，可以…

Samba, ftp与webdav
type: item
date: 2022-10-12T15:11:00+00:00
description: 步骤/目录： 0.Samba的陷阱 1.需求介绍 2.Samba与frp 3.ftp 4.webdav本文首发于个人博客https://lisper517.top/index.php/archives/59/，转载请注明出处。本文的目的是使用树莓派搭建可公网访问的NAS，并且比较Samba, ftp与webdav这三种方式的异同。本文实验日期为2022年10月11日。使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ）。0.Samba的陷阱当你在windows中打开 我的电脑 ，此时打开的东西叫文件管理器（Windows Explorer）。从文件管理器向其它地方拷贝东西，WE会要求目标硬盘先创建一个同等大小的空镜像（内容全部为0的镜像），再填充数据；Samba会调用 ftruncate() 函数来创建，而该函数在FAT文件系统上运行奇慢，需要花很长时间才能创建好空白镜像，WE以为Samba卡死了，最终会返回0x8007003B错误（ 参考回答 ）。FAT文件系统创建空镜像这么慢，归根结底是不支持sparse file（稀疏文件），所以它创建空镜像时真的会在硬盘上挨个写入0；而支持sparse file的，直接指定空镜像文件的头尾区块、存在metadata中即可，不用管这些区块上原本是1还是0。在Samba的设置中有一项隐藏的默认值 strict allocate = no ，如果改成yes，当单个文件大小超过500MB，Samba自己就会要求先生成空镜像再填充数据（参考 wiki-Samba 的 SMB/SMB2 write activities 一节）。综上所述，不需要改Samba的配置，只要保证Samba挂载的不是FAT文件系统（exFAT、FAT32）而是ext4、NTFS就行了（ 参考回答 ）。先创建空镜像再写入，本意是好的，只是FAT执行坏了。1.需求介绍在之前 树莓派+Samba+frp搭建NAS（网络云存储） 一文中，曾介绍过使用Samba在局域网内搭建NAS，并且使用千兆路由器后达到了不错的内网分享速度。在那篇文章中还将samba使用的445端口通过frp映射到公网ip，试图在公网也能访问NAS，但实际上并没有成功。本文将再次尝试，并且除了Samba之外，还尝试使用ftp与webdav方式搭建。需要注意的是，文中提到的所有方法都是树莓派直连硬盘，也就是说用linux把硬盘分享为NAS；如果你用windows电脑直连硬盘分享NAS，本文可能帮不了你。最后，本文中使用的都是云服务器+frp，这样NAS的带宽会被严重限制为云服务器的带宽，有条件的建议还是用DDNS，见之前的文章 路由器与DDNS （如果你家用的是移动的宽带，也可以不用看那篇文章，就用云服务器+frp）。2.Samba与frp在之前的文章中，成功在树莓派上搭建了Samba，内网已经能流畅访问，千兆路由器下，文件读写最快能达到113MB/s，而机械硬盘的最高读写速度也才150MB/s左右，已经很不错了。后来试着用frp开放到公网，怀疑因为云服务器带宽不够（640KB/s），导致windows上连接超时。之后换用 3.75MB/s 的云服务器，还是无法连接，这时才怀疑是否操作有些问题。最终，通过一番寻找，笔者成功解决了Samba开放到外网、用windows连接的问题。这里就跳过Samba的搭建，直接讲如何配置frp，windows如何连接。云服务器、frps和frpc的其他配置见前文，frpc配置好后添加一个samba的映射即可：[samba] type = tcp local_ip = localhost local_port = 445 remote_port = 44500这里 remote_port 选择44500而不是445，主要是因为安全性。445端口本来就是windows用来共享文件夹的，据有些文章说以前 永恒之蓝 病毒针对445、139等端口搞了一些事情，导致现在445、139等端口被全网封禁（139、138、137也和文件共享有关，据说如果445走不通就会尝试这些端口）。所以现在映射445到服务器其他端口，你可以自己选一个大一点的，这里以44500为例。设置完frpc.ini后，在云服务器的防火墙中打开44500端口。到这里，其实已经可以连接到Samba了，mac、linux都可以指定端口号，在文件浏览器中输入 smb://云服务器ip或域名:44500/共享名 即可，然后输入用户名密码即可；linux用命令行挂载时，需要如下操作：apt install -y cifs-utils #CentOS把apt换成yum…

AX6S路由器固化SSH
type: item
date: 2022-10-11T09:33:00+00:00
description: 1.需求介绍 2.解锁SSH （1）降回开发版固件 （2）连接SSH 3.固化SSH （1）备份 Bdata 和 crash 分区 （2）修改 Bdata 和 crash （3）刷入 Bdata 和 crash （4）切换系统版本 （5）稳定版固件固化SSH 4.其他设置 附录：小米路由器修复工具的使用本文首发于个人博客https://lisper517.top/index.php/archives/58/，转载请注明出处。本文的目的是为小米AX6S路由器固化SSH，这样即使升级官方固件，SSH也会开放。本文实验日期2022年10月11日，电脑为windows10系统。1.需求介绍在之前 寝室多设备连接校园网的解决方案 一文中，曾经为小米路由器4C刷上原版openwrt固件（固件可以理解为操作系统），在路由器上运行脚本实现校园网自动拨号、保持连接。实际上，如果使用性能更好的路由器，刷上其他固件以后还能做很多其他事情，但这一切都要通过基础的SSH来进行；可是路由器刷上其他固件后，由于不如原厂固件贴合，常常有路由器重启、wifi信号弱等问题。综上，使用原厂固件，优点是系统稳定，缺点是没有打开SSH、自由度不高；使用其他固件可以打开SSH、得到更多功能，但缺点是不如原厂固件稳定、wifi信号差。所以，在使用原厂固件的情况下开启SSH功能，成为一个比较折衷的选择。本文的目的就是对AX6S路由器，在使用原厂固件时打开SSH功能，并且将SSH功能固化，即使原厂固件升级或者路由器重启时也保持SSH打开。操作步骤和工具完全参考了 这个项目 。该项目包含的文件可到原网页下载，或者使用 笔者的备份 进行下载。本文中不含图片，项目中的md文档包含图片，更加直观。另外需要说明的是，不同厂家或者不同型号的路由器，开启SSH的方法不尽相同，其他型号的路由器打开SSH不能完全使用本文的方法。2.解锁SSH对于小米AX6S路由器，一般是把原厂固件降回开发版固件（默认开启Telnet和SSH功能），然后用SN号计算出root密码，连接到SSH。（1）降回开发版固件浏览器进入AX6S主页：192.168.31.1，找到 常用设置 -> 系统状态 -> 升级检测 ，点击 手动升级 -> 选择文件 ，选择 miwifi_rb03_firmware_stable_1.2.7.bin 这个文件上传、开始升级。这个文件在 小米路由器官网 无法找到，因为现在AX6S和许多其他型号都不提供开发版固件下载（目前好像只有AX9000，就是售价1299￥的那款路由器提供开发版固件）。但是它的小米路由器修复工具挺不错的，救砖能力强大，建议下载一个，网址为 https://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip 。升级过程中注意路由器不要断电了。升级的同时，到 root密码计算网站 ，输入AX6S下方标签贴的SN号（或者在路由器管理页面也可以看到），经过一定计算得出root密码（小米官方固件的开发版都可以这样得到root密码）。路由器升级完成后指示灯会重新变蓝，刷新一下 192.168.31.1 可以确认，管理密码是一样的，但是能看到背景里有水印：only for test。（2）连接SSH使用putty.exe，ip为 192.168.31.1 ，端口就是22，进行连接。但有时开发版也可能只开启了Telnet、未打开SSH，那么就需要用Telnet开启SSH。对于win10机器，在 windows设置 里搜索 启用或关闭windows功能 ，在下面的框中勾选 Telnet 客户端 后确定，这样就开启了Telnet功能。然后在cmd中输入 telnet 192.168.31.1 ，输入root和密码即可用telnet连接到AX6S。接下来进行如下操作以解锁SSH：nvram set telnet_en=1 nvram set ssh_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram commit /etc/init.d/dropbear enable /etc/init.d/dropbear start再次使用putty连接AX6S的SSH，成功。至此，SSH解锁成功。为了让原厂固件升级后或路由器重启后SSH功能也保持开启，还需要进行一些额外操作。3.固化SSH以下的命令使用SSH或Telnet输入都可以。（1）备份 Bdata 和 crash 分区使用 cat /proc/mtd 查看 Bdata 和 crash 对应的dev名，笔者实验时分别为 mtd5 和 mtd7 。接下来使用如下命令备份它们：nanddump -f /tmp/Bdata_mt…

路由器与DDNS
type: item
date: 2022-09-30T14:55:00+00:00
description: 步骤/目录： 1.DDNS简介 2.获取域名 3.配置路由器 4.配置端口转发 5.配置光猫 6.DDNS的安全性本文首发于个人博客https://lisper517.top/index.php/archives/54/，转载请注明出处。本文的目的是介绍DDNS，并在路由器上使用DDNS，以达到访问内网设备的目的。本文写作日期为2022年9月30日。1.DDNS简介想要从公网访问自己的电脑或其他设备，笔者之前的文章中曾详细介绍过frp内网穿透，它的使用流程大概是：购买一台有公网IP的云服务器，在云服务器上运行frps，在需要从公网访问的机器上运行frpc，运行frpc时是将一个或多个内网机器的端口投射到云服务器的端口上，比如多个内网机器的22端口都需要开放到公网，那云服务器自己占一个22端口，其他机器就用云服务器的122、222、322等端口。frp是中心化的，优点是你可以将多个不同局域网（比如你在两个地方各买了一套房子，或者其他情况下不得不把需要投射的机器放在几个不相连的局域网中）的机器端口投射到同一个公网ip，安全性也有保障（如果你会设置tls、双向认证的话）；缺点是带宽等于云服务器的带宽，而云服务器的带宽常常不够用，可能只有 5 Mbps 这种速度（ 625 KB/s ），想看看家里的监控都有点卡。本文介绍的DDNS则是另一种路线，使用流程为：向网络运营商申请公网ip（这个公网ip在每次拨号时都会变化，不是固定的。另外，据说电信的公网IP最容易申请，联通次之，移动基本不可能），到DDNS服务商处申请一个域名，在需要开放到公网的机器上安装DDNS客户端即可。它的原理是，每次装有DDNS客户端的内网机器联网时，都会要求DDNS服务商把你的域名解析到这台机器的公网ip上（所以虽然每次拨号时公网ip可能变化，但都能通过域名确定公网ip）。在实践中，一般这个开放到公网的机器是路由器，因为它开机时间长、不怕断电，能把连到路由器上的其他内网机器的端口投射到路由器上，而且现在很多路由器都自带DDNS客户端支持。DDNS是以域名为中心的，优点是网速可以很快，只和你的路由器速度、宽带（百兆还是千兆）相关；缺点是域名选择比较少（但是花一些钱，也可以把DDNS的域名设置为自己的域名，比如下文的no-ip是29.95$/年），所有要投射的机器都要在同一个局域网下，而且安全性上需要一点注意（在openwrt等固件上可以设置DDNS用HTTPS加密，但是路由器自带的固件很少有支持这个的）。申请公网ip这一步，你需要找到当初帮你装宽带的师傅，或者你这一片区的网络负责人，可以告诉他家里要装监控，想申请一个公网ip，如果是电信、联通的基本都会帮你开。另外据说尽量不要通过10000或10010找师傅，因为这样算投诉、要扣工资，而是应该留一个师傅的私人电话或微信联系。本文中，选择红米AX6S路由器，它自带支持花生壳（oray.com）、公云（3322.org）、 dyndns.com 和 no-ip.com 这四家DDNS服务商，其中笔者选择 no-ip.com ，很多路由器都支持 no-ip.com 。不过路由器支持最多的还是花生壳，可惜比较贵，而且用花生壳据说需要提交身份证信息。如果你想跟着本文实操，最好买一样的路由器，或者自己去找支持DDNS的路由器（同时还需要支持端口转发，一般支持DDNS的路由器都支持端口转发），查看该路由器支持哪些DDNS服务商；不要买太便宜的路由器了，两三百还是要出的，表示一下起码的尊重，如果一切顺利，你需要花钱的地方只有买路由器这一步，原本的路由器就支持DDNS的话甚至可以不用花钱。2.获取域名进入 https://www.noip.com/ ，右上角用自己的邮箱注册一个免费账号（高级账号有一些额外功能，但是这里就用免费账号演示一下），注册的时候可以先不填域名。登录后自己跳转到 https://my.noip.com/ ，点击左侧的 Dynamic DNS -> No-IP Hostnames ，点击 Create Hostname ，这里需要输入自己的域名、选择后缀域名，最后的样子是 自己的域名.后缀域名1.后缀域名2 ，意思就是比如 www.bing.com ，这3者当中你能随意改动的只有 www ； bing.com 则是固定的，不过还是可以有几种选择。自己的域名最好独特一点，否则路由器下线的时候这个域名可能被别人注册（虽然概率极低）；后缀域名最好先试试能否访问，有些后缀域名因没有备案而无法访问。接下来点击右侧的 Account -> Account Info ，在 Basic Info 里把Username改一下。这个用户名和密码要记住，设置路由器要用。然后在右侧点击 Account -> Security ，有个二维码…

Python，爬虫与深度学习（6）——爬虫详解（二）构建自己的ip池（简易版）
type: item
date: 2022-09-04T15:13:00+00:00
description: 步骤/目录： 1.需求分析 2.mysql建表 3.网页请求分析 4.爬虫编写 （0）安装所需模块 （1）mysql存取 （2）爬虫主体编写 （3）其他爬虫补充 （4）实际运行 （5）检测爬取的ip 5.总结与改进本文首发于个人博客https://lisper517.top/index.php/archives/44/，转载请注明出处。本文的目的是构建自己的ip池。本文写作日期为2022年9月4日。操作的平台为win10，编辑器为VS code。爬虫写的好，牢房进的早。使用爬虫时不要占用服务器太多流量，否则可能惹祸上身。除了python与爬虫，这里实际上还需要了解html格式与mysql命令。可以在 runoob-html 或 runoob-mysql 找到初步的学习资料，或者查看笔者其他的文章。最后，笔者的能力有限，也并非CS从业人员，很多地方难免有纰漏或者不符合代码原则的地方，请在评论中指出。1.需求分析之前说过，在对别人的网页服务器进行爬取时要注意不能占用太多服务器资源。但有时候，我们确实需要在短时间内对某个网页高频访问，又担心自己被封ip，那么此时维护一个ip池就非常有必要，我们需要对网络上的ip（每个ip背后是一个或一群服务器）进行测试，看是否能利用这些ip作为代理服务器访问其他网页。本文先介绍如何爬取ip，后续文章会介绍如何用自己的ip池爬取网页，以及代理失效时更换代理。在爬虫的一些较高级的应用中，一个ipool是非常基础且不可或缺的，所以建议学会scrapy后就应该尽快建立自己的ipool（除非没有高频访问某个网页的需求）。ip池的构建和使用分为两步，第一步是筛选ip。世界上的公网ipv4地址最多有 4,294,967,296 个（256^4。实际上有一些被局域网占用，有一些不会使用），要一个个去验证这些ip耗时太长，何况还需要对已存在的ip进行验证、剔除失效ip。所以，这里使用一些提供免费代理ip的网页缩小ip搜索范围，爬取到的代理ip不做验证，都放入库中（这里使用mysql）。第二步是对mysql中已有的ip进行验证，挑选出对某个网址有效的代理ip。这一步严格来讲和第一步关系不大，它可以在前一个步骤进行时也同步进行，更重要的是这一步是在其他爬虫开始后才进行，下面就讲解一下免费代理ip的使用。免费代理可分为HTTP或HTTPS，高匿名和低匿名。如果爬虫运行时经过了这些免费代理，毕竟还是别人的服务器，你的请求和响应是到了别人那里，所以用代理服务器时不要传递一些私密信息。实在有必要的话，自己买服务器做转发。最后，同一个代理ip，可能你用它代理一个网站可以，代理另一个网站就不行，这也是不确定因素，所以爬到的代理ip在使用时还要对特定的网址进行测试，其实也是比较麻烦的，如果有紧急需求，建议买一些付费的代理ip。2.mysql建表在mysql中存储收集到的ip，需要新建以下列：ip，字符串形式，VARCHAR(50)（为了将来兼容ipv6，稍微长一点）；端口号，数值形式，SMALLINT UNSIGNED（刚好是0~65535）；匿名度，2个bit位，BIT(2)（0表示低匿名，1表示高匿名，3表示未知）；类型（HTTP还是HTTPS），2个bit位，BIT(2)（0表示HTTP，1表示HTTPS，2表示都可，3表示其他）；ip物理位置，字符串，VARCHAR(100)；响应速度，MEDIUMINT，单位是毫秒ms；最后一次验证的时间，日期时间格式。建表的语句在程序中将给出。其实对这种不断更新、添加的数据，redis更加合适，有关redis的内容将在后续的文章中介绍。3.网页请求分析这里使用的提供代理ip的网站为（笔者给出的例子中，只使用了第一个网址）：http://www.ip3366.net/free/ https://www.kuaidaili.com https://ip.jiangxianli.com/ https://www.cool-proxy.net/ https://free-proxy-list.net https://www.ipaddress.com/proxy-list/ http://proxy-list.org/english/ https://www.proxynova.com/proxy-server-list/ http://pubproxy.com/api/proxy?limit=5&format=txt&type=http&level=anonymous&last_check=60&no_country=CN https://www.rmccurdy.com/.scripts/proxy/good.txt http://spys.one/en/anonymous-proxy-lis…

DNS与更换DNS
type: item
date: 2022-08-27T07:20:00+00:00
description: 步骤/目录： 1.常用DNS 2.更换DNS 3.添加解析记录本文首发于个人博客https://lisper517.top/index.php/archives/37/，转载请注明出处。本文的目的是为树莓派更换DNS。本文实验日期为2022年8月27日。本文使用的树莓派为 4B 8GB 版，系统镜像是Pi OS的64位桌面版，名为 2022-04-04-raspios-bullseye-arm64.img 。1.常用DNSDNS，即 Domain Name Server（域名服务器），是可以将域名与IP进行转换的服务器。ip地址是xxx.xxx.xxx.xxx的格式、由数字组成，而我们访问网页时的域名显然更好记一些，但最终域名必须转换成ip，网络请求才能找到目的地，这就是DNS发挥作用的地方。DNS也需要通过ip访问，下面是一些常用的DNS（排名表示推荐程度）。国外：（1）Cloudflare DNS 1.1.1.1 1.0.0.1 2606:4700:4700::1111 #IPv6的DNS 2606:4700:4700::1001 （2）谷歌 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 （3）微软 4.2.2.1 4.2.2.2 （4）Norton ConnectSafe 199.85.126.10 199.85.126.20 199.85.126.30 199.85.127.10 199.85.127.20 199.85.126.30 （5）OpenDNS 208.67.222.222 208.67.220.220 （6）DNS Watch 84.200.69.80 84.200.70.40 （7）Comodo安全DNS 8.26.56.26 8.20.247.20 （8）威瑞信 64.6.64.6 64.6.65.6 （9）OpenNIC 192.95.54.1 192.95.54.3 （10）GreenTeamDNS 81.218.119.11 209.88.198.133国内：（1）114DNS（http://www.114dns.com/） 114.114.114.114 114.114.115.115 （2）腾讯（https://www.dnspod.cn/Products/Public.DNS） 119.29.29.29 182.254.118.118 （3）阿里（http://alidns.com/） 223.5.5.5 223.6.6.6 （4）百度（http://dudns.baidu.com/intro/publicdns/） 180.76.76.76 （5）CNNIC（http://www.sdns.cn/） 1.2.4.8 210.2.4.82.更换DNSDNS其实起到一个指路的作用，当你访问域名时指向对应的ip。但是有时候可能因为一些原因，DNS故意或无意间指错路了，就被称为 DNS污染 、 DNS劫持 ，这会让我们无法访问到正确的服务器，非常的危险。更换DNS为一些靠谱的DNS可以一定程度上规避这个问题。下面就以google的 8.8.8.8 和 8.8.4.4 为例，展示如何更换为这两个DNS。（0）路由器更换DNS登录路由器后台，一般都可以手动设置DNS，这样最方便。（1）windows系统在 设置 - 网络和Internet - 以太网 - （右上角）更改适配器选项 ，这里可以看到自己的网络连接，可能有无线、有线连接，看一下自己目前用的哪个网络，左下角没有红色叉的是正在使用的网络。对正在用的网络单击鼠标右键，点击 属性 ，点击下面的框里的 Internet协议版本 4 (TCP/IPv4) ，点击右下的 属性 - 常规 - 使用下面的DNS服务器地址 ，填入谷歌DNS。这实际上是设置了单个网络连接的DNS。如果同时使用有线、无线连接，最好把两个网络连接的DNS都设置一下；如果到新的地方、连接到新的网络，则也需要同样更改新网络连接的DNS。（2）linux系统（以树莓派为例）linux系统里一般都可以通过更改 /etc/resolv.conf 这个文件来更改DNS，具体的方法是在这个文件末尾加上：nameserver 8.8.8.8 nameserver 8.8.4.4并把原来的 nameserver 192.168.1.1 等之类的行删掉，或者也可以不删。但是这只是临时更改DNS，因为 /etc/resolv.conf 这个文件在每次开机后里面的内容都会由系统根据系统设置重写，所以开机后原来的设置就会丢失。不过一般这个文件前面的注释里都会提示如何永久更改DNS，像树莓派的这个文件，注释只有一行：# Generated…