新VPS科学球是racknerd一年9.89$捡的,算是美帝良心?
后记:racknerd丢包率和延迟真的没法忍,趁人民币强势斥巨资(三百人民币)换了某瓦工的最贫穷CN2线路,果然一分价钱一分货……
看了几个帖子又咨询了chatgpt,简单的说CN2 GIA是CN2的升级版,贵了两三倍,如果只是上上网CN2就够用了。
CAUTION仅限技术交流!
搭建新VPS科学球环境
Centos7实在太老了就重装了Ubuntu 22.04,首次登录改密码(为了方便,应该把zsh、git、oh-my-zsh、vim、tmux装上。):
# VPS上改密码passwd# 电脑上上传秘钥进行ssh免密登录,也可以直接在云控制台里一次录入多个公钥ssh-copy-id root@1*.*.*.*
sudo apt update && sudo apt dist-upgrade -ysudo apt install zsh git vim tmux ufwchsh -s $(which zsh)sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"将ssh设置为无法用密码登录(只接受key pair认证),顺便调整ssh超时时间:
# /etc/ssh/sshd_config 中:# 禁止密码认证PasswordAuthentication no# 调整ssh会话一次存活60秒,自动重连60次ClientAliveInterval 60ClientAliveCountMax 60
# 重启sshd服务:service sshd restart开防火墙策略:
sudo ufw allow 22/tcp comment sshsudo ufw allow 443/tcp comment httpssudo ufw allow 80/tcp comment httpsudo ufw enable搭建VPS科学球
继续向一键安装脚本(原来的一键安装脚本已失效)低头,真香……这个脚本推荐的是trojan+TCP+TLS,我客户端也按照这个配的,其他的配置貌似连不上,我也没仔细研究。
wget -P /root -N --no-check-certificate "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh" && chmod 700 /root/install.sh && /root/install.sh配置aria2c远程下载服务,本地使用AriaNg搭配风味更佳:
mkdir -p ~/.config/aria2touch ~/.config/aria2/aria2.conf #aria2的配置文件touch ~/.config/aria2/aria2.session #aria2保存会话的文件vim ~/.config/aria2/aria2.conf #修改配置文件配置如下:
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 #### 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##
## 文件保存相关 ##
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置dir=/webroot/downloads# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M#disk-cache=32M# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc# 预分配所需时间: none < falloc ? trunc < prealloc# falloc和trunc则需要文件系统和内核支持# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项#file-allocation=none# 断点续传continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5#max-concurrent-downloads=5# 同一服务器连接数, 添加时可指定, 默认:1max-connection-per-server=16# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载min-split-size=4M# 单个任务最大线程数, 添加时可指定, 默认:5split=16# 整体下载速度限制, 运行时可修改, 默认:0max-overall-download-limit=3000000# 单个任务下载速度限制, 默认:0#max-download-limit=0# 整体上传速度限制, 运行时可修改, 默认:0max-overall-upload-limit=50000# 单个任务上传速度限制, 默认:0#max-upload-limit=0# 禁用IPv6, 默认:falsedisable-ipv6=true# 连接超时时间, 默认:60#timeout=60# 最大重试次数, 设置为0表示不限制重试次数, 默认:5#max-tries=5# 设置重试等待的秒数, 默认:0#retry-wait=0
## 进度保存相关 ##
# 从会话文件中读取下载任务input-file=/root/.config/aria2/aria2.session# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件save-session=/root/.config/aria2/aria2.session# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:falseenable-rpc=true# 允许所有来源, 默认:falserpc-allow-origin-all=true# 允许非外部访问, 默认:falserpc-listen-all=true# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同#event-poll=select# RPC监听端口, 端口被占用时可以修改, 默认:6800rpc-listen-port=6800# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项rpc-secret=<your-rpc-secret># 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项#rpc-user=<USER># 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项#rpc-passwd=<PASSWD># 是否启用 RPC 服务的 SSL/TLS 加密,# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接#rpc-secure=true# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥#rpc-certificate=/path/to/certificate.pem# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件#rpc-private-key=/path/to/certificate.key
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:truefollow-torrent=true# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999listen-port=51414# 单个种子最大连接数, 默认:55#bt-max-peers=55# 打开DHT功能, PT需要禁用, 默认:trueenable-dht=true# 打开IPv6 DHT功能, PT需要禁用#enable-dht6=false# DHT网络监听端口, 默认:6881-6999dht-listen-port=6881-6999# 本地节点查找, PT需要禁用, 默认:falsebt-enable-lpd=true# 种子交换, PT需要禁用, 默认:trueenable-peer-exchange=true# 每个种子限速, 对少种的PT很有用, 默认:50Kbt-request-peer-speed-limit=3M# 客户端伪装, PT需要peer-id-prefix=-TR2770-user-agent=Transmission/2.77peer-agent=Transmission/2.77# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0seed-ratio=1.0seed-time=0# 强制保存会话, 即使任务已经完成, 默认:false# 较新的版本开启后会在任务完成后依然保留.aria2文件#force-save=false# BT校验相关, 默认:true#bt-hash-check-seed=true# 继续之前的BT任务时, 无需再次校验, 默认:falsebt-seed-unverified=true# 保存磁力链接元数据为种子文件(.torrent文件), 默认:falsebt-save-metadata=false# dht-filedht-file-path=/root/.config/aria2/dht.dat# 删除未选择的文件bt-remove-unselected-file=true# 无速度时自动停止时间#bt-stop-timeout=1800启动aria2c:
aria2c --conf-path=$HOME/.config/aria2/aria2.conf -D如果端口有监听,防火墙也设了策略,但是仍然不通,可能是selinux策略的问题,可以在selinux中选择添加新端口:
sudo semanage port -l | grep http_port_tsudo semanage port -a -t http_port_t -p tcp 8888如果nginx报403错误,有可能是selinux的问题,看看ll文件夹权限最后有没有一个.或+,如果有可以尝试关闭selinux重新创建文件夹,去掉那个.。
如果觉得selinux麻烦,可以选择关闭selinux:
# 验证selinux状态:getenforce# 或/usr/sbin/sestatus -v
# 关闭selinux:vim /etc/selinux/configSELINUX=disabled另外,我的tmux配置用的是Oh my tmux,安装也很简单,只要tmux >= 2.4即可(centos7默认是1.8)。
cdgit clone https://github.com/gpakosz/.tmux.gitln -s -f .tmux/.tmux.confcp .tmux/.tmux.conf.local .OpenWRT和客户端设置
我的macOS上用的是v2rayU,不过这个客户端貌似只有trojan配置可以用,其他不通,我也没仔细研究。
树莓派上依然是刷了最新版的OpenWrt-Rpi,这个版本跟一两年前的区别是,刷固件的时候会先覆盖内存卡做初始化,避免了上次那种配置了WiFi后即使重刷固件依然无法修改WiFi配置,必须低格才能删掉配置的尴尬。
在OpenWRT上要记得先设置静态IP(比如我用192.168.1.150),网关指向家里最前端的路由,再配置自定义DNS(如陕西移动的DNS是211.137.130.19),此时树莓派网络就正常了。
接下来记得设置OpenWRT的DHCP,以使连上来的终端的网关和DNS强制指向这个树莓派,在 网络->LAN->高级设置 中勾选强制;设置IPv4子网掩码(比如我用255.255.255.0);设置DHCP选项,比如我用3,192.168.1.150和6,192.168.1.150(3指设置DHCP客户端的网关,6指设置DHCP客户端的DNS,详见维基DHCP选项)。
最开始没设置DHCP选项,导致客户端接受的是前端路由器的DHCP设置,搜到这篇排错后,用service dnsmasq restart后查看日志logread -e dnsmasq,发现报错:
Mon Oct 31 22:27:24 2022 user.notice dnsmasq: found already running DHCP-server on interface 'br-lan' refusing to start, use 'option force 1' to override这里要用强制选项DHCP才能设上,不过,如果网里同时有两个DHCP,通常相应快的那个会抢占设置客户端,所以最好还是关掉一个。
安装nps内网穿透服务端
小可怜服务器没多少空间舍不得安装golang,直接从release列表中下载相应的二进制运行:
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gztar -zxvf linux_amd64_server.tar.gzsudo ./nps installsudo nps start查看日志cat /var/log/nps.log,此时应该会有报错,因为我的443早就被占了:
...2022/11/06 12:21:24.577 [E] [http.go:82] listen tcp 0.0.0.0:443: listen: address already in use修改配置文件/etc/nps/conf/nps.conf的用户名和密码,以及默认的http和https监听:
# ...web_username=xxxweb_password=xxx# ...http_proxy_port=8880https_proxy_port=8443# ...重启nps restart再次查看日志,已正常启动:
...2022/11/06 12:22:51.420 [I] [nps.go:202] the version of server is 0.26.10 ,allow client core version to be 0.26.02022/11/06 12:22:52.927 [I] [connection.go:36] server start, the bridge type is tcp, the bridge port is 80242022/11/06 12:22:52.931 [I] [server.go:200] tunnel task start mode:httpHostServer port 02022/11/06 12:22:52.931 [I] [connection.go:71] web management start, access port is 80802022/11/06 12:22:52.946 [I] [connection.go:62] start https listener, port is 84432022/11/06 12:22:52.946 [I] [connection.go:53] start http listener, port is 8880开启防火墙,其中:
8024是默认桥接口,用于将内网客户端注册上来;8080是管理口,用于网页访问修改配置;10022是我要用的ssh映射端口口,即访问4x.x.x.x:10022->内网192.168.x.x:22;- 其他端口,如
8443->443、8880->80,是用于作域名映射的,我不用就不开策略了。
sudo firewall-cmd --zone=public --permanent --add-port=8024/tcp # nps 桥接端口sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp # nps 管理端口sudo firewall-cmd --zone=public --permanent --add-port=10022/tcp # nps 映射到内网22的端口# 不使用域名代理,防火墙可以不开#sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp # nps http 代理端口#sudo firewall-cmd --zone=public --permanent --add-port=8880/tcp # nps https 代理端口firewall-cmd --list-allfirewall-cmd --reload然后,在内网的树莓派3B+上下载客户端:
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_arm_v7_client.tar.gz按照说明添加一个客户端,并在树莓派上尝试连接nps服务器:
./npc -server=4x.x.x.x:8024 -vkey=*******此时刷新nps管理页面,客户端已显示线了。在管理页面的TCP隧道中加一条端口映射,就可以从电脑上连接ssh -p 10022 pi@4x.x.x.x了。
新树莓派环境里youtube-dl下载带有key的hls时,使用--hls-prefer-native标识如果不生效,总是回到用ffmpeg下载,有可能是因为树莓派的python环境里缺少解密包,安装即可:
pip install pycrypto# 如果是python3.10,用pycryptodome,参考:https://stackoverflow.com/questions/70705404/systemerror-py-ssize-t-clean-macro-must-be-defined-for-formats树莓派需要下载这些东西,如果要使用OpenWRT,可以临时改一下路由,将0.0.0.0/0的默认路由指向OpenWRT即可:
# 添加前ip route listdefault via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.119 metric 202192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.119 metric 202# 添加默认路由sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev eth0 proto static# 查看结果ip route list0.0.0.0/0 via 192.168.1.150 dev eth0 proto static # 此时会多一条默认路由default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.119 metric 202192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.119 metric 202# 删除默认路由sudo ip route del 0.0.0.0/0# 查看结果ip route listdefault via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.119 metric 202192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.119 metric 202# 如果不小心删了默认路由,加回去就行了sudo ip route add default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.119 metric 202另外,
最后注意,此时树莓派的22口相当于暴露在公网上了,所以最好把ssh的密码登录关掉,只允许密钥登陆。