需求
下载一些电子书PDF,供自己阅读,这个网站收录最多,可供下载的类型非常多。
网站地址
Z-library官网地址 https://zh.z-lib.org/
Z-libraray的维基信息地址 https://zh.wikipedia.org/wiki/Z-Library
可选,
1、无需注册,更换IP,进行下载文件
2、注册,登录,捐赠1美元,无限制下载
需求
下载一些电子书PDF,供自己阅读,这个网站收录最多,可供下载的类型非常多。
网站地址
Z-library官网地址 https://zh.z-lib.org/
Z-libraray的维基信息地址 https://zh.wikipedia.org/wiki/Z-Library
可选,
1、无需注册,更换IP,进行下载文件
2、注册,登录,捐赠1美元,无限制下载
段落1、需求
本地的环境是Debian / Ubuntu的Linux环境,需要安装openvpn3客户端,并连接到已有的服务端上。
客户端项目地址 https://github.com/OpenVPN/openvpn3-linux
段落2、openvpn3客户端安装
参考 https://community.openvpn.net/openvpn/wiki/OpenVPN3Linux
登录本地的Debian / Ubuntu客户端的Linux环境,编辑文件 /etc/apt/sources.list.d/openvpn3.list
添加内容
# OpenVPN3 Official Apt Repository for openvpn3. deb https://swupdate.openvpn.net/community/openvpn3/repos stretch main
// 执行更新 root@client:~# apt-get update // 安装必要的组件 root@client:~# apt install apt-transport-https build-essential libssl-dev // 添加密钥 root@client:~# wget https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub root@client:~# apt-key add openvpn-repo-pkg-key.pub // 再次更新 root@client:~# apt-get update root@client:~# apt-get upgrade // 安装客户端 root@client:~# apt install openvpn3
// 正常安装的提示信息 Setting up libjsoncpp1:amd64 (1.7.4-3) ... Setting up python3-dbus (1.2.4-1+b1) ... Setting up python3-gi (3.22.0-2) ... Setting up openvpn3 (16~beta+stretch) ... openvpn3-autoload.service is a disabled or a static unit, not starting it.
段落3、欢快使用openvpn3客户端
附录、报错记录1,如果,安装时候的报错信息如下
The following packages have unmet dependencies:
openvpn3 : Depends: libcap-ng0 (>= 0.7.9) but 0.7.7-3+b1 is to be installed
Depends: libgcc-s1 (>= 3.0) but it is not installable
Depends: libprotobuf17 but it is not installable
Depends: libssl1.1 (>= 1.1.1) but 1.1.0l-1~deb9u4 is to be installed
Depends: libstdc++6 (>= 9) but 6.3.0-18+deb9u1 is to be installed
Depends: libtinyxml2-6a (>= 6.0.0) but it is not installable
E: Unable to correct problems, you have held broken packages.
此报错,大概率,是你编辑文件 /etc/apt/sources.list.d/openvpn3.list 文件中,你当前的Debian/Ubuntu发型版本的名称写错了。
问题描述
上次刷机的迅雷赚钱包ARM机器,armbian里面没有iptables,其基于Debian 10的,那安装即可,但是,安装后出现报错
查看系统版本
lsb_release -a
Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster
uname -a
Linux ARMXLII 3.10.36 #52 SMP PREEMPT Mon Mar 15 14:14:47 CST 2021 armv7l GNU/Linux
安装过程
apt-get update apt-get install iptables iptables-persistent
查看防火墙的状态
iptables -L -v
执行上面查看防火墙状态的命令,出现的报错提示
iptables v1.8.2 (nf_tables): TABLE_ADD failed (Invalid argument): table filter
报错的原因,其实就是预设的nf_tables,没有加载到对应的模块,把iptables-legacy启用即可,感谢留言解决此问题。
执行命令
update-alternatives --set iptables /usr/sbin/iptables-legacy update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
本篇章博客介绍,如何给你的服务器,增加IPv6地址
网络配置,有一定的风险,请勿直接在生产环境进行,请先用虚拟机测试OK,再进行生产实践。
网络配置,有一定的风险,请勿直接在生产环境进行,请先用虚拟机测试OK,再进行生产实践。
网络配置,有一定的风险,请勿直接在生产环境进行,请先用虚拟机测试OK,再进行生产实践。
假设你公网网卡名称为 eth0,本文以此名称示例,请修改到你自己的网卡名称
假设你的公网IPv6地址为 address 20a1:0db1:0021:0008:0000:0000:6115:eb3f
假设你的公网IPv6网关为 gateway 20a1:0db1:0021:0008:0000:0000:0000:0001
假设你的公网IPv6掩码为 netmask 64
段落1、如果系统为Debian / Ubuntu 16.04
修改 /etc/network/interfaces.d/90-ipv6 iface eth0 inet6 static accept_ra 0 address 20a1:0db1:0021:0008:0000:0000:6115:eb3f netmask 64 mtu 1500 gateway 20a1:0db1:0021:0008:0000:0000:0000:0001 重启网络服务 systemctl restart networking
段落2、如果系统为Ubuntu 18.04 / 20.04
修改 /etc/netplan/90-ipv6.yaml network: ethernets: eth0: addresses: - 20a1:0db1:0021:0008:0000:0000:6115:eb3f/64 gateway6: 20a1:0db1:0021:0008:0000:0000:0000:0001 version: 2 应用到网络 netplan apply
段落3、如果系统为CentOS / AlmaLinux
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 增加 IPV6ADDR=20a1:0db1:0021:0008:0000:0000:6115:eb3f/64 IPV6INIT=yes IPV6_DEFAULTGW=20a1:0db1:0021:0008:0000:0000:0000:0001%eth0 重启网络服务 systemctl restart network
上面任意系统修改后,记得查看一下网络状况
ip -6 addr
附录、如果商家给你的是一个/64透传的地址,则可能优先按照商家的教程配置,网络复杂,根据实际的配置
比如下面的配置,增加在 /etc/network/interfaces
iface ens3 inet6 static address 2a06:af81:1:8682::1/64 gateway fe80::1
网络配置文件 /etc/network/interfaces的典型IPv6配置
# The primary network interface auto eth0 iface eth0 inet static address 15.12.178.81 netmask 255.255.255.0 gateway 15.12.178.1 iface eth0 inet6 static accept_ra 0 address 2a04:ac0d:101:84e:: netmask 64 gateway 2a04:ac0d:0101:0000:0000:0000:0000:0001 post-up /sbin/ip -r route add 2a04:ac0d:0101:0000:0000:0000:0000:0001 dev eth0 post-up /sbin/ip -r route add default via 2a04:ac0d:0101:0000:0000:0000:0000:0001
# OVZ Debian 9 iface venet0 inet6 static address ::2 netmask 128 up ip -6 r a default dev venet0 up ip addr add 210b:5100:60:370f:d3::5cb4/80 dev venet0
参数示意
1、 eth0为网卡 名称
2、 static静态地址
3、address为IP地址
4、netmask掩码
5、gateway网关
6、ip命令增加路由
段落1、需求
服务器的IPv4看Netflix,没希望,被Netflix的IP地址库封的死死的,手里有一台服务器,它的IPv6地址是英国的原生IPv6,可以支持观看Netflix
那么,就简单了,我们通过配置让Netflix的流量走到IPv6出口即可
入站的流量通过服务器的IPv4地址进入,出站的Netflix流量通过原生IPv6出站,其余非Netflix流媒体的流量,还是通过IPv4出站
通过 基于sjlleo/netflix-verify,检测VPS服务器IP地址或节点IP是否支持Netflix流媒体 2022-2-28
段落2、部署操作
操作1-3
// 在routing的rules列表中增加Netflix的相关域名,指定它走IPv6的路由 "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "type": "field", "domain": [ "netflix.com", "netflix.net", "netflixdnstest1.com", "netflixdnstest2.com", "netflixdnstest3.com", "netflixdnstest4.com", "netflixdnstest5.com", "netflixdnstest6.com", "netflixdnstest7.com", "netflixdnstest8.com", "netflixdnstest9.com", "netflixdnstest10.com", "netflixinvestor.com", "netflixtechblog.com", "nflxext.com", "nflximg.com", "nflximg.net", "nflxsearch.net", "nflxso.net", "nflxvideo.net", "geosite:netflix" ], "outboundTag": "IPv6_OUT" }, { "type": "field", "outboundTag": "IPv4_OUT", "network": "udp,tcp" } ] },
操作2-3
// 在入站的inbounds中增加"sniffing"的参数 "inbounds": [ { "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ] }, "settings": { "clients": [ { "id": "dc0d52a2-c6c3-44e4-85cf-b479f736c378", "alterId": 0 } ] }, "port": 8080, "protocol": "vmess" } ],
操作3-3
// 在outbounds出站中区分开IPv4/IPv6两项内容 "outbounds": [ { "protocol": "freedom", "settings": {}, "tag": "IPv4_OUT" }, { "protocol": "freedom", "settings": { "domainStrategy": "UseIPv6" }, "tag": "IPv6_OUT" }, { "settings": {}, "protocol": "blackhole", "tag": "blocked" } ]
段落9、额外信息
同理,一些主流的支持IPv6的网站,也可以根据这个办法,进行IPv6分流
"geosite:netflix" "geosite:google" "geosite:youtube"
还有一种方式备用,sni+dnsmasq 分流
搭建完后,修改配置/etc/sniproxy.conf,设置ipv6优先,完重启机器
resolver { nameserver 8.8.8.8 nameserver 8.8.4.4 # local dns should be better mode ipv6_first }
段落1、需求
在Ubuntu 20.04 LTS环境上,编译安装MySQL数据库
段落2、部署实施
更新包索引
apt-get update
安装MySQL Server
apt install mysql-server
安装的一些包信息如下
The following NEW packages will be installed: libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0 0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded. Need to get 31.4 MB of archives. After this operation, 262 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
段落3、MySQL的安全加固
mysql_secure_installation
Press y|Y for Yes, any other key for No: y LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 // 数据MySQL数据库root用户的密码,密码可自定义,假设密码为,CbA5_eaC8_b0d4_Ff0a_2b76,输入密码时候,密码不显示,直接输入按回车 New password: CbA5_eaC8_b0d4_Ff0a_2b76 Re-enter new password: CbA5_eaC8_b0d4_Ff0a_2b76 Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y // 移除匿名用户 Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y // 禁止root远程登录 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N // 移除测试库实例 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y // 重载一下权限 Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
段落4、创建数据库的普通帐号
root@UK-d68b93f1d5:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.28-0ubuntu0.20.04.3 (Ubuntu) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
// 数据库的版本信息 Server version: 8.0.28-0ubuntu0.20.04.3 (Ubuntu) // 进入数据库,需要输入刚刚的密码 root@server:~# mysql -u root -p // 创建数据库的普通用户 wordpress,看你本地版本,选择创建普通用户的命令,二选一执行 // MySQL 8.0, caching_sha2_password is the default authentication plugin // MySQL 5.7, mysql_native_password is the default mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'wordpress_57AADFEF668Ae2E8E6285858'; mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED WITH mysql_native_password BY 'wordpress_57AADFEF668Ae2E8E6285858'; // 如果是删除普通用户 wordpress mysql> DROP USER 'wordpress'@'localhost'; // 如果是删除普通的数据库实例 wordpress mysql> drop database wordpress; // 查看数据库中的用户 mysql> select User from mysql.user; // 查看数据库中的数据库实例 mysql> show databases; // 创建一个数据库实例 wordpress // MySQL 8.0比较推荐使用 utf8mb4 // MySQL 5.5比较推荐使用 utf8 // MySQL supports two kinds of UTF8 character sets: utf8 and utf8mb4 // MySQL's utf8mb4 character table is a superset of BMP and contains also 4-bytes characters. This character tables is supported since MySQL 5.5.3 // MySQL version 5.5.3 or later, use the utf8mb4 character set mysql> create database wordpress character set utf8mb4 collate utf8mb4_bin; mysql> create database wordpress character set utf8 collate utf8_bin; // 把普通数据库账号和数据库实例关联起来 mysql> GRANT ALL privileges ON wordpress.* to wordpress@localhost; // 也可以只把某个表的权限给到数据库用户 mysql> GRANT PRIVILEGE ON wordpress.tablename TO 'wordpress'@'host'; // 如果是单项权限的修改,可参考命令 mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on wordpress.* TO 'wordpress'@'localhost' WITH GRANT OPTION; // 权限生效 mysql> flush privileges; // 推出交互 mysql> exit // 查看MySQL服务状态 systemctl status mysql.service systemctl restart mysql.service
需求
为了衔接Nginx和MySQL数据库,我们需要安装php
Nginx没有内在支持php,故而,我们需要PHP-FPM (“fastCGI process manager”)来驱动它
部署实施
更新包清单
apt update
安装
apt install php-fpm
// Ubuntu 20.04.4 LTS 安装的日志记录 2022-3-1 The following additional packages will be installed: php-common php7.4-cli php7.4-common php7.4-fpm php7.4-json php7.4-opcache php7.4-readline Suggested packages: php-pear The following NEW packages will be installed: php-common php-fpm php7.4-cli php7.4-common php7.4-fpm php7.4-json php7.4-opcache php7.4-readline 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 4,080 kB of archives. After this operation, 18.1 MB of additional disk space will be used. Do you want to continue? [Y/n] Y ... Setting up php-fpm (2:7.4+75) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for systemd (245.4-4ubuntu3.15) ... Processing triggers for php7.4-cli (7.4.3-4ubuntu2.9) ... Processing triggers for php7.4-fpm (7.4.3-4ubuntu2.9) ...
查看服务的状态
systemctl status php7.4-fpm
增加修改对于Nginx的衔接
server { # . . . other code location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } }
重启服务
systemctl restart nginx
安装扩展模块,比如MySQL支持的模块
apt install php-mysql
安装扩展模块,比如图片的模块
GD is an open source code library for the dynamic creation of images. GD is used for creating PNG, JPEG and GIF images and is commonly used to generate charts, graphics, thumbnails on the fly.
apt install php-gd
创建一个临时的PHP INFO测试文件,测试通的之后,记得删除
一般的路径为 /var/www/html/info.php
<? phpinfo(); ?>
备注1, 一般推荐安装这个php 7.4的版本,不推荐安装旧的版本了。
需求描述
检测某个服务器的IP地址,或者节点服务器IP地址,是否持Netflix流媒体
项目地址
https://github.com/sjlleo/netflix-verify
如果检测Disney Plus
https://github.com/sjlleo/VerifyDisneyPlus
实践使用,一般如果是自己的服务器,在自己的amd64/Linux服务器上面执行如下:
mkdir /root/bin/ cd /root/bin/ # 获取文件 wget https://github.com/sjlleo/netflix-verify/releases/download/2.61/nf_2.61_linux_amd64 # 给到执行权限 chmod +x nf_2.61_linux_amd64 # 测试Netflix支持情况,一般选用lite即可,如果要测试IPv6,选择参数full ./nf_2.61_linux_amd64 -method lite ./nf_2.61_linux_amd64 -method full
如果本地的Windows电脑,则推荐使用clash for windows客户端的全局模式,配合进行检测
# 浏览器下载 https://github.com/sjlleo/netflix-verify/releases/download/2.61/nf_2.61_windows_amd64.exe # 打开V2rayN-core 3.29的仅开启HTTP代理,不改变系统设置 # 打开CMD命令提示符,设置环境变量,即可执行检测。 set HTTP_PROXY=http://127.0.0.1:10809 set HTTPS_PROXY=http://127.0.0.1:10809
段落1、前章
本篇章的Ping Tunnel进阶配置教程,承接上一篇,进阶第一课,在此基础上的配置需求,如果不了解Ping Tunnel项目基础用法,不了解增加入口服务器,前置代理的,请先看原先的两期教程和视频
基础教程
冷门的隧道协议PingTunnel概览,配置简单,可用于过市面上绝大部分的硬件防火墙 2021-12-12
https://dasmz.com/?p=867
进阶1
冷门的隧道协议Ping Tunnel,进阶配置,第一课,增加ping tunnel客户端国内云VPS入口服务器 2022-02-21
https://dasmz.com/?p=1404
段落2、概述
需求的由来:
大家在实际使用Ping Tunnel的过程中,会发现,带宽占用的问题,比如我这里的资源为
1、US服务器的配置为 1核心 1GB 15GB磁盘 500Mbps带宽,配置为Ping Tunnel服务端,操作系统为Ubuntu 20.04 LTS
2、CN沃云服务器配置为 1核心 1GB 20GB磁盘 6Mbps带宽,配置为Ping Tunnel客户端 + 前置入口代理Gost/SS服务端,操作系统为Ubuntu 18.04 LTS
3、CN自己的手机/电脑,配置为SS客户端
整体路由已经是优化的高QoS出口流量,但是,由于作为接入点的CN服务器,一般带宽都比较小(国内的商业宽带基本都很贵),所以,就像水流一样,这个数据流在这里形成了一个束缚。
故而,为了避免CN入口服务器的上行带宽被Ping Tunnel打满形成阻塞的情况,我们有必要进行双端的限速。
限速的方式,我这里推荐大家选iptables,简单实用。
段落3、配置实施
我这里的场景是端到端的TCP/IP协议簇里的ICMP协议的通信,有源IP地址,有目的IP地址,ICMP协议无端口。
iptables限速,一般可通过限制时间范围内的数据包个数来约束网络载荷。
CN服务器,带宽为6Mbps,折算其对外的上行速度为 6 * 1024 / 8 = 768.0 KB/s
先进行CN服务器,入站限速的配置,基于limit模块,进行统计匹配
基于PingTunnel的入口socks5,进行wget http/https下载测速,经过4论次的参数匹配的测速结果如下
# 创建测速脚本 /root/speedtest.sh # 参数--limit-burst 20 即满足20秒次的突发 #!/bin/sh rm /root/*_speedtest_report.txt for speed in 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 do echo "= = = = = = = SPLIT = = = = = = =" echo "GOGOGO "${speed} cd /root/ /usr/sbin/iptables --flush /usr/sbin/iptables -A INPUT -s US服务器的IP地址 -p icmp -m icmp --icmp-type any -m limit --limit ${speed}/sec --limit-burst 20 -j ACCEPT /usr/sbin/iptables -A INPUT -s US服务器的IP地址 -p icmp -m icmp --icmp-type any -j DROP /usr/bin/proxychains4 -q wget -O /dev/null -o ${speed}_speedtest_report.txt https://mia.hostodo.com/10MB.test done # END
网络性能测试用例A,limit-burst参数定为20,前后多时间段,四轮次下载测速,结果如下
对照均值,建立图形可视
由图可发现,在 参数为 –limit 1500/second –limit-burst 20的时候,下载速度多次的均值为766.5KB/s,贴近我们这台CN服务器的网络性能。再往后,即便开放更高的包入站,也无法提升网络性能。故而,如果burst参数为20时候,这台CN入口服务器,优先选择1500/s的包过滤参数。
网络性能测试用例B,下面,我们把limit-burst参数设置为30,再进行一轮次测试
同样的,我们根据均值,建立折线图,可以根据图,观察到参数为 –limit 1500/second –limit-burst 30的时候,本次速度为838.75KB/s,基本实现网络性能最优组合。
如果为了保证贴近我这台6Mbps入口服务器的上行网络性能,就应该选择–limit 1300/second –limit-burst 30的参数组合。
网络性能测试用例C,limit-burst 40的时候,测试了3论次,数据如下
网络性能曲线图
总结时刻
通过观察,增加limit-burst的数值,可以增加整体速度,对于入口低的服务器,选择的条件不多。
因为我的这台入口服务器的上行带宽是6Mbps,为了保证贴近我自己的服务器的效果,我这里就有3组数据可选,是比较合适的。
--limit 1500/second --limit-burst 20 # 速度为766.5KB/s --limit 1300/second --limit-burst 30 # 速度为769.7KB/s --limit 1200/second --limit-burst 40 # 速度为785.0KB/s
在入口服务器设置防火墙规则,在终端中执行即可,注意保存防火墙规则,以免重启后失效
iptables -A INPUT -s 此处US服务器IP地址 -p icmp -m icmp --icmp-type any -m limit --limit 1200/second --limit-burst 40 -j ACCEPT iptables -A INPUT -s 此处US服务器IP地址 -p icmp -m icmp --icmp-type any -j DROP
另外,US服务器,出站限速,可选做,我这里没有进行设置,因为流量多,没必要折腾。海外服务器是出站,所以是OUTPUT链,包的limit可以多一点,因为发包的网络流量,过程中,考虑丢包的情况。
iptables -A OUTPUT -d 此处CN服务器IP地址 -p icmp -m icmp --icmp-type any -m limit --limit 1300/second --limit-burst 40 -j ACCEPT iptables -A OUTPUT -d 此处CN服务器IP地址 -p icmp -m icmp --icmp-type any -j DROP