Sakiko's Blog - Linux
type: channel
link: https://blog.earlywolf.cn/category/Lux/
description: 使用Linux或是VPS时的错误报告说是习得技巧
items: LaTeX字体显示 | 带圈数字 | 中文URL
items: 【软路由】2 J4125 All In One网络与代理分流配置
items: 【软路由】1 J4125 All In One安装日记
items: 梅林华硕路由设置ipv6 DDNS
items: MCSManager管理Minecraft服务端
items: Minecraft服务器MOD与网络访问
items: Cloudflare自选IP与DDNS
items: Cloudflare证书与Nginx安全
items: LaTeX编写文章
items: Minecraft Java服务器搭建

LaTeX字体显示 | 带圈数字 | 中文URL
type: item
date: 2024-09-23T05:05:00+08:00
description: 记录LaTeX中文文档有关字符显示的字体、连字、中文URL、带圈数字等问题。 请使用目录标签跳转查看。本文示例仓库见marvel084/LaTeXTest2024 (github.com) 一、LuaLaTeX vs XeLaTeX 在字符显示上 LuaTeX优点： 与csl（citeproc-lua）配合的很好 使用ctex时，支持\url直接显示URL中的汉字 TH-Times字体支持彩色emoji，且使用ZWJ的不受干扰 pmhanguljamo宏包可以正常显示（古）谚文 LuaTeX缺点： 多语言TTC字体TH-Times无法直接使用，加polyglossia包后可使用 （西文）fontspec定义的字体，不加Script参数不能正确处理“连字/位置变体”（如八思巴文 ꡂ ꡦ ꡃ -> ꡂꡦꡃ） 配合BixbLaTeX时，不能正确显示参考文献的中文URL（用的biblatex-gb7714-2015 issue方法，biblatex-gb7714-2015本身会对中文url转义，这也导致用lualatex编译会因url和urlraw不一致而报错终止）（待复现） 使用ctex（luatex-ja）后不能拼合古谚文，需调至西文ALchar显示 fontspec定义的字体（使用Script=Hangul参数）。在TeX Live 2023及以上发行版中，在使用LuaLaTeX编译时，如果一个谚文的初、中声刚好能拼成现代韩语音节（谚文音节区段，Hangul Syllables，"AC00-"D7AF），则该音节会抢先显示，把终声甩在后头，从而使古谚文无法正确拼合。 XeTeX优点： （西文）fontspec定义的字体（不加Script参数）能正确处理“连字/位置变体”（如八思巴文） （中文）xeCJK定义的字体能正确拼合古谚文（如ᄎ ᆑ ᇙ拼成ᄎᆑᇙ） 配合BibLaTeX能正确显示参考文献的中文URL（见biblatex-gb7714-2015 issue） XeTeX缺点： 不能直接使用csl（citeproc-lua）参考文献后端，但可以配置latexmkrc等方式使用 \url无法正确显示中文URL，遇中文网址需转义或改用\href pmhanguljamo宏包显示谚文会被xeCJK干扰从而显示错误，可用polyglossia分别配置语言环境解决 TH-Times字体不支持彩色emoji，polyglossia+ctex时使用ZWJ的emoji无法显示（如麻将红宝牌 🀔\char"200D🟥） 二、字体 参见： LaTeX 字体配置 | Fenglielie LaTeX札记（四）：字体 | Levitate_ (levitate-qian.github.io) tex-gyre字体族介绍：https://www.gust.org.pl/projects/e-foundry/tex-gyre latex衬线字体库：The LaTeX Font Catalogue – Serif Fonts (tug.org) 一种CJK选字体的方式：如何使用inputenc打出unicode字体 - LaTeX工作室 (latexstudio.net) 2.1 西文字体 fontspec fontspec用来配置（西文）字体，可以指定OpenType字体的参数 分别设置正文衬线、无衬线、等宽字体 \setmainfont{texgyretermes}[ %仿TimesNewRoman字体 Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Ligatures = TeX, ]% \setsansfont{texgyreheros}[ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, ]% \setmonofont{texgyrecursor}[ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Scale = MatchLowercase, Ligatures = CommonOff, ]% 对于粗体、斜体等变化可以使用Style，可以调用其他字体。 对于TrueType TTC字体没有对应的Bold字…

【软路由】2 J4125 All In One网络与代理分流配置
type: item
date: 2024-02-17T21:15:06+08:00
description: J4125 All In One主机安装软路由和代理分流的网络配置 本期为软路由系列的第二期，介绍All In One主机的网络环境与软路由网络相关配置。分为主路由的网络网络配置与旁路由的代理分流配置。 网络架构 网络拓扑 结合上期，位于客厅的软路由下接8+1光交换机，并用光纤连接至位于弱电箱的交换机用于连接各网络面板。两交换机间另使用网线相连作为冗余备用，这要求环路中的其中一台交换机具有环路功能。 布网时每个86面板预留一条CAT6网线和两条单模光纤，光模块选择拆机LC双纤光模块。 网络设备 网线：使用24AWG CAT6网线，穿线最多能2条网线1条光纤。若允许更粗网线可选择大唐电信的23AWG CAT6网线。 光纤：布线使用单模单纤光电复合缆，因此每管需要穿2条光纤。光电复合缆仅为了预留未来需求，相较光纤皮线更软更易盘旋。也可以选择并缆的单模单芯蝶形光纤。选择穿两条光纤是因为拆机二手双LC的光模块更便宜，光纤两侧直接打LC的冷接头。冷接子注意淘宝可以购买光电复合缆专用的LC冷接子，比普通光纤皮线的冷接子夹得更紧，需要预留的裸纤和涂覆层长度也与普通光纤皮线不同。 光纤冷接还需要红光笔+SC/LC转接头以测试通断。 冷接实战教程参见：家庭万兆光纤网络布网实践，附带光纤冷接教程，让光纤铺满你家，提前感受FTTR！_哔哩哔哩_bilibili 、秒掉5G？光纤布网战未来！Fiber Optical Yes！_哔哩哔哩_bilibili、万兆光纤布网实战攻略，让光纤铺满你家！_哔哩哔哩_bilibili 面板：末端光纤冷接，可以直接选择如下的法兰，插在普通的两口网络面板上。注意不要买倾斜开口的面板，这会导致打好冷接头的光纤由于86暗盒空间限制而不能插在面板上。若平式面板依然空间不足，可以考虑使用下面的异型86面板，将光纤盘在明盒中。 交换机：兮克2.5G交换机 8+1光 非管理（SKS1200-8GPY1XF）、8+1光管理型（SKS3200M-8GPY1XF） PC：另购2.5G螃蟹8156bUSB网卡，网卡驱动下载参见：TANK TR8156N Realtek USB RTL8156B 2.5G网卡 全系统驱动安装使用教程 - Tank电玩&米多贝克 (mi-d.cn)，这种2.5G网卡只是用默认驱动会导致不能跑满带宽。 主路由设置 DHCP与DNS配置 内网中架设AdGuard Home负责DNS解析，因此将路由DNS指向AdGuard服务器，并勾选DNS加速 为了区分正常用户与需要走旁路由代理的用户，将路由分为两个DHCP池，普通用户网关为主路由，DNS指向AdGuard；需要走代理的用户通过DHCP与MAC绑定接入第二个DHCP池，网关、DNS指向旁路由。这样即便旁路由挂了也不影响正常设备上网。 内网访问光猫 使路由能够DHCP到光猫的网段IP，能够互相通信。 参考：通过ikuai访问光猫管理界面 内外网设置——外网设置WAN1，接入方式选择基于物理网卡的混合模式，添加PPPoE拨号配置adsl1，同时添加DHCP配置vwan1。将PPPoE设置开启默认网关。这样软路由的WAN口会获取到光猫DHCP分配的IP地址。 防火墙 参见： iKuai爱快的IPv6防火墙设置，允许规则优先于阻断。iKuai默认不启用IPv6防火墙，必须要添加的规则： 禁止公网通过IPv6访问本地 允许本地通过IPv6访问公网 允许特定协议/端口通过IPv6访问内网特定用户 ::32c/::FFFF:FFFF:FFFF:FFFF #nginx ::741/::FFFF:FFFF:FFFF:FFFF #qbittorrent ::b05/::FFFF:FFFF:FFFF:FFFF #debian12 应用访问控制 在路由层面上禁用STUN、P2P和去广告。网页端阻止泄露IP可以使用防WebRTC泄露插件：WebRTC Control (google.com)等 接下来是代理与分流配置。 主路由代理分流（不采用） 参考：iKuai与Openwrt的有机结合：传统旁路由方案的完美替代 | JackieWu 缺点：主路由分出两个WAN口，代理数据多走一层NAT 旁路由代理分流 旁路由使用OpenClash软件做代理，同时在旁路由上启用基于DNS或流量嗅探的分流，使中国大陆的流量不过核心。 iStore扩展插件包： https://github.com/AUK9527/Are-u-ok/tree/main/x86 防火墙分流 iptables 只通过国内ipv6：探讨下有没有国内流量保留 ipv6, 国外流量禁用 ipv6 的优雅姿势 - V2EX，仅作参考 ip6tables -F FORWARD ip6tables -I FORWARD -d 240e::…

【软路由】1 J4125 All In One安装日记
type: item
date: 2023-11-29T01:45:00+08:00
description: J4125 All In One主机搭建pve，安装iKuai、OpenWRT、Adguard LXC、Debian12 LXC、Home Assistant OS。 本期开始是软路由安装与配置系列，一共计划三期，主要记录工控机安装虚拟化系统并搭建软路由、服务器、NAS、Docker等系统及其配置和使用过程。本文不作为教程，仅仅是up主初试All in One主机搭建的记录，仅供参考。 参考： 【软路由】J4125安装PVE7.3+iKuai+OpenWrt+NAS+Win10+Debian+CentOS_pve添加第二块硬盘_xuehu96的博客-CSDN博客 司波图文字：通用PVE AIO安装教程: 通用PVE集成软路由，KODI，基于LXC的Docker服务教程 (gitee.com) AIO从入门到如土 篇一：一文为你揭开一台all in one家庭服务器的神秘面纱_服务器_什么值得买 (smzdm.com) 一、宿主机 选用倍控J4125 4*2.5G网口小主机，安装16GB内存、2T SATA固态硬盘和螃蟹8156b 2.5GUSB网卡（做管理口用，虽然这机器USB只能跑2.0速度）。 网口接线 参考：家用软路由、NAS、All in one网络拓扑方案 - 知乎 (zhihu.com) 网口定义： 宿主机外部名称 宿主机设备名 宿主机pcie地址 软路由内设备名 ETH0 enp1s0 01:00.0 eth1 ETH1 enp2s0 02:00.0 eth2 ETH2 eno1 03:00.0 eth1 ETH3 enp4s0 04:00.0 硬盘分配 500G mSATA做宿主机系统盘和虚拟机储存空间，2T SATA固态直接挂载给LXC容器做下载空间。 flowchart LR subgraph sdb ["/dev/sdb 2TB"] O["挂载 - Debian12 LXC /mnt/ext - qbittorrent LXC /mnt/ext"] end subgraph sda ["/dev/sda 500GB"] subgraph 11[local 100G] A["100G PVE/ESXi"] end subgraph 22[local-lvm 375G] direction TB B[10G iKuai] C[2.5G OpenWRT] F[32G HAOS] G(10G qbittorrent LXC) H(10G Nginx LXC) I(20G AdGuard LXC) D("100G Debian12 LXC") end end 内存分配 LXC不会占用全部内存，KVM虚拟机会分配全部内存。 graph LR subgraph DRAM ["16GiB内存"] A[iKuai 2G] B[OpenWRT 4G] D[HAOS 4G] CDebian LXC 10G Eqbittorrent LXC 4G FNginx LXC 2G GAdGuard LXC 1G end esxi or pve？ esxi不能显示CPU温度？ 容易核显直通 esxi需封装i226、8156b驱动 esxi直通核显需要预留内存 esxi性能损失更小？但无法利用p-state，功耗更大？ 网卡驱动：关于RTL8156 USB 2.5G网卡的安装说明 - 哔哩哔哩 (bilibili.com) PVE7.3 与 ESXi7.0U3c 性能对比：https://kb.blockbridge.com/technote/proxmox-vs-vmware-nvmetcp/ PVE 8.0.3、ESXi 8.0U1、Unraid 6.12.4、Hyper-V和黑群晖 7.1.1虚拟性能的比较：https://youtu.be/hdDNNgnMPII?si=UzrYLOJv4TTvSxFt 结论：PVE在Geekbench跑分中落后ESXi 2到3个百分点，其余指标均低于ESXi百分之1以内。 二、PVE 8.0 2.1 开启IOMMU组 vim /etc/default/grub 在 GRUB_CMDLINE_LINUX_DEFAULT 中，添加intel_iommu=on 和 iommu=pt 2.2 虚拟机架构 graph TD AIO[(AIO)] --> PVE(PVE) ==> A([100 debian12 LXC]) PVE --> B[101 OpenWRT] PVE --> C[102 iKuai] PVE --> D[103 HAOS] PVE ==> E([104 qbittorrent]) PVE ==> F([105 Nginx]) PVE ==> G([10…

梅林华硕路由设置ipv6 DDNS
type: item
date: 2023-11-07T06:16:00+08:00
description: 本文记录梅林固件华硕路由器配置ipv6、防火墙、DDNSv6、Cloudflare代理与Nginx配置。 原本自2017年以来使用的联通300M宽带，EPON，有公网IP、可以多拨，能稳定700M下行，于是利用端口转发内网的文件服务器使用了很长时间。但自2023年9月起，天津联通部分地区拨号不再提供公网ipv4地址，因此将路由改为获取ipv6使用。 本例中光猫桥接，路由拨号并获取到公网ipv6，服务器获取到全球单播地址。域名配置 AAAA 记录指向服务器ipv6，服务器定期向域名DNS更新ip，并且正确配置路由器ipv6防火墙使只允许指向服务器的特定端口放行。 graph LR 1(域名) --> |AAAA| 2路由器防火墙 -->|放行| 3[服务器] 3 -.-> |DDNS更新| 1 ipv6构成 2408:8210:8433:160::1/64，2408:8210:8f03:20ed:6d4:c49d:2c42:a650/64 ipv6为128位ip地址，上面为两个典型的示例ipv6地址，/64为子网掩码表示该地址前64位是固定的。一般前64位为子网ID，表示某个具体的子网；后64位为接口ID，可以由设备MAC地址计算得到，表示用户的唯一标识。 上网设备的ipv6地址分为单播、组播和任播地址。由运营商得到每个设备的ipv6全球唯一单播地址，均为公网ip，以二进制001开头，即16进制2000::/3，如2408:8xxx 即为联通的网络。除此之外还有链路本地地址fe80::1/10、私网地址 fc0d::/7（类比ipv4的192.168.x.x）。 一般可以从运营商处获得/60的子网，有空余的4位可以最多再划分成最多16个子网，不过一般路由器倾向于只保留一个子网。 如240e:3c1:5665:1cd/60子网可划分成: 240e:3c1:5665:1cdf/64给IoT设备、240e:3c1:5665:1cd3/64给语音、240e:3c1:5665:1cd0/64用于上网 接口ID可以由MAC自动生成（如EUI-64算法），无需DHCPv6，这也是ipv6无状态自动配置的一大特点。华硕路由中ipv6地址的获取分为stateless和stateful，无状态获得的地址会自动变化，而有状态的地址可以划定地址池固定不变。为了能更好地写路由器ipv6防火墙配置，本文中采用stateful获取ipv6地址。 路由器设置 在华硕/梅林路由器中，开启ipv6，获取模式为native，状态为stateful，这样每个设备能获取到不变的接口ID。 IPV6防火墙 参考：路由器梅林固件如何设置IPV6端口转发_路由器_什么值得买 (smzdm.com) 服务器有后缀不变的公网ipv6后，还需配置路由器的ipv6防火墙使得服务器对应端口能被正确访问。在ipv6防火墙规则处添加你想放行的端口，内网ip和子网掩码实测这样写能够正常配置，注意前面ip的0不可省略。 0:0:0:0:0:0:0:1234/::FFFF:FFFF:FFFF:FFFF （上面参考文章中的方法实测iptables会录入不全，可以ssh进路由器，使用ip6tables --list 查看记录） 外网访问 DDNSv6 你内网的服务器现在有了公网ipv6，如何能访问到它呢？因为这是一个纯ipv6站，所以需要你的访问设备也支持ipv6，没有ipv6地址的设备是无法访问纯ipv6站点的。 可以使用 https://ipw.cn/ 和 https://ipv6ready.me/ 来检测自己设备对ipv6的支持状况。 若显示OK则您的设备可以正常访问ipv6网站！倘若您的设备没有通过测试（像是使用纯ipv4的代理服务器访问时）也是有办法能公网访问ipv6服务器的。 这里我们采用DNSPOD做域名解析，在服务器上使用ddns-go程序负责DDNSv6。 先在DNSPOD上配置一条指向服务器的AAAA记录 AAAA ddnsv6.example.com 2408:8210:8333:4cda::1234 之后在服务器上配置DDNS项目，本次使用ddns-go项目： https://github.com/jeessy2/ddns-go ddns-go也可以很方便的使用docker部署： sudo docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go 启动成功后通过 http://[server ip]:9876 访问web界面 这里填入DNSPOD的domain id和API Token，勾选启用IPV6并填如你需要DDNS到的子域名。 dd…

MCSManager管理Minecraft服务端
type: item
date: 2023-08-16T19:42:00+08:00
description: 本文为Minecraft服务器搭建系列的第三篇。本文介绍了使用第三方面板管理Minecraft服务端的方法，本服务器采用的是MCSManager管理面板。 若Mermaid图表无法正常显示，刷新页面即可。 MCSManager 管理面板：MCSManager - A Lightweight Web Panel for Minecraft Server and more MCSManager是一个开源，分布式，轻量级，快速部署，支持大部分游戏服务端和控制台程序的管理面板，支持中英语言，一直在为 Minecraft，Terraria，Steam 游戏服务器管理员，运维人员和个人开发者提供健康的软件支持。 使用MCSManager管理Minecraft服务端进程。面板分为面板前端和守护进程，默认端口为23333和24444 如果你使用MCDR来管理Minecraft服务端，也可以使用次管理面板，即把启动服务端的脚本替换成启动MCDR的命令。 安装 一键安装： wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup.sh | bash 安装后使用 systemd 启动： systemctl start mcsm-{daemon,web}.service // 启动面板 systemctl stop mcsm-{daemon,web}.service // 停止面板 systemctl restart mcsm-{daemon,web}.service // 重启面板 systemctl restart mcsm-web.service // 只重启面板 Web 服务 systemctl restart mcsm-daemon.service // 只重启面板守护进程服务 面板基本设置请参考官方文档：MCSManager 官方文档 在面板中可以设置崩溃后自动重启、开机自动启动等功能。 反代、配置TLS 参考： 配置 HTTPS (mcsmanager.com) 在VPS本地安装MCS面板，在Minecraft服务器也安装MCS面板。将Minecraft服务器的MCS daemon通过 frp TCP穿透到VPS，在VPS中配置Nginx反代与TLS，访问VPS的MCS面板前端，添加节点使用 wss. 管理面板 服务端（VPS）： flowchart LR client{{client}} --> |https://mc.domain| p1 p1--> |proxy| p2(443) subgraph Cloudflare p1(443) end subgraph VPS Nginx p2 --> |proxy_pass| p3[http://127.0.0.1:23333] end p3 --> p4[Node.js project] 使用Cloudflare代理，在DNS中添加指向VPS IP的A记录 配置VPS的Nginx主文件 TLS加密使用完全加密，服务器上使用Cloudflare申请的15年Origin证书。配置反代至MCSManager面板前端的端口 23333 # MCS 反代 server { listen 80; listen 443 ssl http2; server_name mc.域名; ssl_certificate /www/server/panel/vhost/cert/frps.goodnickname.ga/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/frps.goodnickname.ga/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_pass http://127.0.0.1:23333; proxy_redirect http://$host/ http://$http_host/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; …

Minecraft服务器MOD与网络访问
type: item
date: 2023-08-16T19:32:00+08:00
description: 本文为Minecraft服务器搭建系列的第二篇。本文介绍了Minecraft服务器的模组安装与服务器通过公网域名访问和frp内网穿透的相关操作。 若Mermaid图表无法正常显示，刷新页面即可。 MOD 承接上文，Minecraft服务端发的MOD基于Fabric，MOD可以在 CurseForge 和 Modrinth 上下载，可以在MC百科|最大的Minecraft中文MOD百科上查看详细的MOD介绍与依赖关系。另外如果你使用 HMCL 启动器，可以很方便的搜索和下载MOD，无法显示MOD列表的可将HMCL设置为测试版更新后重试。 目前服务器端安装的MOD如下： $ tree ./mods ./mods ├── architectury-6.3.49-fabric.jar ├── BBOutlineReloaded-2.5-1.19.2-fabric.jar ├── cammies-minecart-tweaks-1.7.jar ├── carpet-tis-addition-mc1.19.2-v1.42.0.jar ├── cloth-config-8.2.88-fabric.jar ├── create-fabric-0.5.0g-791+1.19.2.jar ├── CustomSkinLoader_Fabric-14.15-SNAPSHOT-348.jar ├── emotecraft-for-MC1.19.2-2.2.5-fabric.jar ├── fabric-api-0.66.0+1.19.2.jar ├── fabric-api-0.67.1+1.19.2.jar ├── fabric-carpet-1.19.2-1.4.84+v221018.jar ├── farmers-delight-fabric-1.19.X-1.3.9.jar ├── g4mespeed-1.3.2-mc1.19.jar ├── Geyser-Fabric.jar ├── holograms-1.4.0+1.19.2.jar ├── Jade-1.19.1-fabric-8.6.2.jar ├── journeymap-1.19.1-5.9.0beta2-fabric.jar ├── litematica-fabric-1.19.2-0.12.5.jar ├── lithium-fabric-mc1.19.2-0.10.2.jar ├── magiclib-0.5.37.jar ├── malilib-fabric-1.19.2-0.13.0.jar ├── midnightlib-fabric-1.0.0.jar ├── minimotd-fabric-mc1.19.2-2.0.9.jar ├── plusls-carpet-addition-1.19.2-0.2.5-alpha 0a76b23.jar ├── RoughlyEnoughItems-9.1.572.jar ├── starlight-1.1.1+fabric.ae22326.jar ├── syncmatica-1.19.1-0.3.5.jar ├── tweakeroo-fabric-1.19.2-0.14.3.jar ├── viafabric-0.4.9+21-main.jar ├── whereisit-1.19.2-1.14.13.jar └── worldedit-mod-7.2.12.jar 玩家想要进入服务器，需要安装如下的客户端MOD，本列表与服务端同步更新： 文件 - Nextcloud (goodnickname.cn) 采用的是HMCL的服务端可更新mod整合包，以后再出文介绍。 生存 · 信息辅助型MOD 可以参考黑山大叔的 1.19.3基础整合包 ，乔哥的 2021年推荐生存必装模组 上 、下，「啾」答疑：MC的一些配置 等，都非常详细。 S for Server, C for Client BBOutlineReloaded：BBOR，显示群系、光照强度、史莱姆区块等 【C，S可选】 fabric-carpet ：地毯模组，生存红石必备【SC】 Jade ：抬头显示【SC】 journeymap ：小地图和大地图，但1.19.2下会与BBOR冲突，不建议使用【SC】 plusls-carpet-addition ：PCA，自有协议与客户端同步服务端信息，如箱子物品预览（1.19.2需去Github里找）【SC】 carpet-tis-addition ：TIS Carpet扩展【SC】 RoughlyEnoughItems ：REI 物品管理器，显示合成配方【SC】 syncmatica ：共享投影原理图【SC】 whereisi…

Cloudflare自选IP与DDNS
type: item
date: 2023-08-14T00:28:00+08:00
description: 本文利用回退源使用第二域名DDNS指向Cloudflare实现自选IP，并借助定时脚本自动优选最佳IP 使用Cloudflare做DNS解析的域名，开启Proxy小云朵后可以获得CDN服务，以提高线路不好或是被墙的ip的访问性。当然启用Proxy后连接的好坏也取决于用户到Cloudflare的连接质量，Cloudflare提供了一些固定的泛播ip，用户如果连接至延迟更高的ip反而会获得“减速”效果。因此本文提供一种方式来定期优选Cloudflare ip并指向自己的域名。 一、Cloudflare回退源设置自定义主机名 Cloudflare Saas文档：Cloudflare for SaaS · Cloudflare for Platforms docs 参考：Cloudflare for SaaS实现CF自选IP | CDN - 放养平凡 (btwoa.com) 已往可以使用Worker等方法，现在似乎不再奏效，但现在可以使用Cloudflare提供的回退源即SaaS功能实现DDNS和优选IP。你需要两个域名： 域名A： a.com 使用Cloudflare解析，作为回退源 域名B：b.com 使用其他DNS解析（本文以DNSPod为例），作为自定义域名 使用回退源的方法能够实现多个替身指向同一二级域名，如1.b.com 2.c.com 均指向 fallback.a.com，你可以把fallback.a.com作为你需要加速的博客等网站。如果你的网站大多时间是在国内访问，那完全可以隐藏作为中转的fallback.a.com，仅向用户透露b.com，这样也便于统一做SEO。 自定义域名与回退源的关系如下图所示： graph LR A(Client) --> B --> |A记录|C D --> |proxy|E(Server) subgraph DNSPOD B(1.b.com) end subgraph Cloudflare C[泛播IP 自选] --> |回退源|D(fallback.a.com) end 设置回退源 本文中回退源为fallback.a.com，需要是在Cloudflare中添加DNS记录并开启Proxy的二级域名。 在CLoudflare设置面板的SSL/TLS --> 自定义主机名 中添加回退源并等待初始化完成即可。初次使用可能要求绑定银行卡或PayPal账户，选择免费的套餐即可。 添加自定义域名 本文中使用的自定义域名为1.b.com ，当然你可以添加多个自定义域名。在CLoudflare设置面板的SSL/TLS --> 自定义主机名 中添加自定义主机名： 在这里选择TXT验证，Cloudflare会提供你用于鉴权和证书验证的两条TXT记录，将其添加至你的DNS解析（如DNSPod） _cf-custom-hostname.1 xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx 1 "ca3-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 接下来需要先将自定义域名CNAME到回退源，待Cloudflare验证成功后删除CNAME记录，再添加指向Cloudflare泛播IP的A记录。 1 CNAME fallback.a.com 之后在使用Cloudflare自选IP的时候，记得先禁用此CNAME记录。 二、Cloudflare 自选 IP Cloudflare提供了一些泛播IP（参见官方公布的IP 范围 | Cloudflare），通过脚本测试优选延迟最低的ip，并设置自定义域名 1.b.com指向这些ip便可实现优化Clouflare连接的作用。 优选IP脚本使用项目：XIU2/CloudflareSpeedTest: 「自选优选 IP」测试 Cloudflare CDN 延迟和速度，获取最快 IP ！ 按照项目说明使用，克隆到本地： git clone https://github.com/XIU2/CloudflareSpeedTest.git 在关掉代理的电脑上运行此脚本，得到本机连接Cloudlfare最优的ip，将最优的ip添加至自定义主机名的A记录 1 A 103.21.244.0 并禁用此前的CNAME记录，用户在访问1.b.com时即可获得指向Cloudflare站点的最优连接。 CloudflareST脚本的使用语法： #设置单个IP延迟测试的次数为10 ./CloudflareST -t 10 三、DDNS-Cloudflare-Dnspod 为了定时优选Cloudflare IP并自动修改DNS解析，我们需要DDNS脚本来完成这一操作。 采取方案：openwrt定时优选Cloudflare IP并更新到dnspod_哔哩哔哩_bili…

Cloudflare证书与Nginx安全
type: item
date: 2023-08-01T15:55:00+08:00
description: 介绍Cloudflare提供的几种网站HTTPS加密方法与提高网站安全性的方式，同时介绍防止通过域名暴露IP的方法，和阻断IP访问握手，进而防止获取域名的方法，提高网站的安全性。 Cloudflare的TLS安全设置 使用Cloudflare解析域名的一大重要原因就是其免费的CDN（Proxy）功能，这需要至少访问者到Cloudflare之间使用TLS加密。Cloudflare提供了灵活、完全和严格三种方案。灵活（flexible）表示用户浏览器与Cloudflare使用Cloudflare提供的证书加密，而完全（Full）和严格（strict）需要Cloudflare与源服务器通信也需要加密。 使用灵活模式加密的站点不需要服务器配置证书，若服务器申请了证书，请选择完全加密模式。 源服务器证书 Cloudflare 源证书是 Cloudflare 颁发的免费 TLS 证书，可以安装在源服务器上，以方便使用 HTTPS 的访问者进行端到端加密。 Cloudflare提供的源服务器证书有效期为15年，供严格加密模式使用。只能用于通过Cloudflare代理的TLS加密。 新增选择泛域名 example.com、*.example.com ，新增PEM格式证书和私钥。您可以粘贴至宝塔面板等应用。 客户端证书——防止暴露IP 参见：如何避免Cloudflare背后的源站被恶意访问 | Mayx的博客 Cloudflare 官方文档：Authenticated origin pull · Cloudflare SSL/TLS docs Cloudflare提供了经过身份验证的源服务器拉取功能，即Authenticated Origin Pulls (mTLS)，根据官方文档介绍，简单原理即为在TLS的基础上增加一层握手，能够有效的防止泄露源站IP。 部署步骤： 根据Cloudflare部署步骤，下载Cloudflare提供的证书，并部署在源服务器上 以Nginx为例，先将证书转换成crt格式： openssl x509 -in authenticated_origin_pull_ca.pem -out cloudflare.crt 将Nginx server 中启用客端验证： # Cloudflare 客户端认证 ssl_client_certificate /etc/nginx/certs/cloudflare.crt; ssl_verify_client on; 在Cloudflare/TLS/源服务器页面下，开启“经过身份验证的源服务器拉取”后，即可保护源站。 DNSSEC 域名系统安全扩展（英语：Domain Name System Security Extensions，缩写为DNSSEC）是Internet工程任务组（IETF）的对确保由域名系统 （DNS）中提供的关于互联网协议（IP）网络使用特定类型的信息规格包。它是对DNS提供给DNS客户端（解析器）的DNS数据来源进行认证，并验证不存在性和校验数据完整性验证，但不提供机密性和可用性。 DNSSEC 验证可以保护 DNS 数据，也可使这类数据在 DNS 以外的应用程序中值得信赖，因此，为域名部署 DNSSEC，有利于互联网安全，并可加强应对攻击能力。 请阅读Cloudflare文档了解DNSSEC是如何工作的，开启DNSSEC需要去域名注册商添加Cloudflare提供的认证信息。 在腾讯云注册的域名可以参考此文配置：Cloudflare配置DNSSEC-腾讯云开发者社区-腾讯云 (tencent.com) 需要注意Cloudflare给出的配置与腾讯云对应的是： 关键标签：密钥标记 加密算法：算法 摘要类型：摘要类型 摘要：摘要 其中加密算法13 在腾讯云中的对应是 ECDSA Curve P-256 with SHA-25 HSTS HSTS 是 HTTP 严格传输安全（HTTP Strict Transport Security）的缩写。启用HSTS后服务器会拒绝未加密的连接，强制HTTPS加密访问，用户不能绕过无效的证书。 如何从浏览器的 HSTS 缓存中删除域？ 参考：什么是HSTS，为什么要使用它？ - 知乎 (zhihu.com) 在设置 HSTS 并测试它时，可能需要清除浏览器中的 HSTS 缓存。 如果你设置 HSTS 不正确，你可能会访问网站出错，除非你清除数据。 下面是几种常用浏览器的方法。 还要注意，如果你的域在 HSTS 预加载列表中，清除 HSTS 缓存将是无效的，并且无法强制进行 HTTP 连接。 要从 Chrome HSTS 缓存中删除一个域名，请按照以下步骤操作： 访问 chrome://net-internals/#hsts 在 De…

LaTeX编写文章
type: item
date: 2023-07-01T03:27:00+08:00
description: 记录在LaTeX使用中的心得，仅为笔记，文章有待重排。 Mac VSCode+LaTeX Workshop 引用文献编译方式 参照：https://www.bilibili.com/video/BV1TD4y1D7YV/ 在 settings.conf 中的 latex-workshop.latex.recipes 里添加： { "name": "xelatex -> bibtex -> xelatex*2", "tools": [ "xelatex", "bibtex", "xelatex", "xelatex" ] }, 使用xelatex编译，再使用bib生成引用文献，再使用xelatex两次，编译成功。 引用的方式： 啦啦啦\cite{hadoop-env} \bibliographystyle{IEEEtran} %引用风格 \bibliography{thesis} %./thesis.bib (beamer同样适用) 多文档管理 参照TJU-Thesis GIT管理 git ignore文件 .DS_Store .texpadtmp .stfolder .vscode # main.pdf tjumain.pdf # tmp files of ppt,excel documents ~$* ~$figures.xlsx ~$figures.pptx *.toc *.synctex(busy) *.aux *.bbl *.blg *.log *.synctex.gz *.fls *.fdb_latexmk *.out *.thm $\LaTeX$ 公式 妈咪说LaTeXLive帮助文档：在线LaTeX公式编辑器-帮助文档 (latexlive.com) 不同字体： \begin{array}{c} \mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ ABCDEFGHIJKLMNOPQRSTUVWXYZ \\ \boldsymbol{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathsf{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \end{array} $$ \begin{array}{c} \mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ ABCDEFGHIJKLMNOPQRSTUVWXYZ \\ \boldsymbol{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\ \mathsf{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \end{array} $$ 文件格式排布 页眉 小写c表示只有中央，大写C表示除了中央，还可能有两边。 \pagestyle{fancy} \fancyhead[c]{ \includegraphics[scale=0.5]{figures/school} \@cheading} % 首页页眉格式 \fancyfoot[c]{\thepage} lstlisting [firstnumber=100] %第一个数字为100 [firstnumber=last] %起始行数为上一段lstlisting环境结尾的行数 [caption={MyCode1}] %说明 [caption={[Code2] An very important code}] %可分别添加一个短的和长的caption [label=Code1] % 标签 [title=Code1] %可以去掉label产 \begin{lstlisting}[language=Python,caption=Import \lstinline{meta_demos},label={lst:df_list}] #导入数据表 #表头 meta_he…

Minecraft Java服务器搭建
type: item
date: 2023-02-05T04:46:00+08:00
description: Minecraft服务器搭建相关文章已分开发布，此为本系列的第一篇。本文介绍了Minecraft JAVA Fabric端MOD服务器的基本搭建过程。 若Mermaid图表无法正常显示，刷新页面即可。 概览 目前服务器已无人问津，暂不考虑升版本，现在此文仅作为一个记录。 服务器地址：mc.goodnickname.cn 模式：自我定位为模组 生电 · 机械 服 版本：JAVA 1.19.2 Fabric MOD：机械动力（create），农夫乐事（delight）和诸多辅助性mod 注意事项： 客户端需安装相应MOD才能服务器 服务器不定期开放，无白名单，无正版验证 在机械动力没有新版的fabric支持前，暂不升级1.20 服务器 本次开服经历仅抱着试验的态度，若想要人数更多、更稳定、跑MOD的Minecraft服务器，请选择更强性能的物理服务器，本文仅供参考。 以下是FAQ： 为什么选择笔记本？ 闲置不用，作为家庭x86服务器，刚好尝试搭建Minecraft服务端 为什么选择Linux系统？ 配置老旧只能装Linux，而且Linux能提供更多的服务 目前Minecraft服务端运行在本地（旧笔记本上），存档定期会存到Aternos上的镜像服和腾讯云的“冷备份”服务器中。 电脑为2012年的ThinkPad X230，配置为4核8G，CPU i5-3230M，内存 两条DDR3 ，加装了SATA SSD。 系统为基于Debian的Deepin Linux 20.8 （19年为了体验Deepin装的，就一直没换） $ uname -a Linux deepin-server 5.15.77-amd64-desktop #1 SMP Wed Nov 9 15:59:34 CST 2022 x86_64 GNU/Linux 运行状态： 服务器峰值功耗在20W以内，高负载运行温度也基本在50多度，使用10年后依然能平稳运行。 系统盘换成SSD后，游戏不再崩溃，各服务的运行速度明显增加。 由于服务器还承担下载服务和Home Assistant服务，因此最多给MC开6GB内存，对于模组服少量用户也可以使用。 搭建过程 因为想要传统生电服的性能提高mod和后期加装机械动力这样的mod，于是选择了fabric端开服，一般来说这对服务器的性能要求很高，但介于玩家人数不多，也能正常运行。 JAVA环境 高版本Minecraft需要Java16以上的环境，这里选择直接安装jdk-18，debian系可以从Oracle官网下载 .deb 包 Java Archive Downloads - Java SE 18 (oracle.com) wget https://download.oracle.com/java/18/archive/jdk-18.0.2.1_linux-x64_bin.deb 然后使用 dpkg 安装 sudo dpkg -i jdk-18.0.2.1_linux-x64_bin.deb 添加环境 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-18/bin/java 1100 将默认JAVA环境切换到jdk-18 sudo update-alternatives --config java 选择路径为 /usr/lib/jvm/jdk-18/bin/java 作为 /usr/bin/java 之后启动Minecraft服务端会自动选择JAVA 1.18 安装Minecraft Server 我们致力于构建比较vanilla的 生存 服务器，所以选择了Fabric 端用于安装辅助MOD Fabric is a lightweight, experimental modding toolchain for Minecraft. 在Minecraft官网（或是官方启动器中）下载服务器 jar 包 官方：https://www.minecraft.net/en-us/download/server 版本存档：https://mcversions.net/ 可不执行此步骤，之后通过Fabric Installer下载Minecraft服务器包 下载Fabric Installer Fabric Installer 下载：https://fabricmc.net/use/server/ curl -o installer.jar https://maven.fabricmc.net/net/fabricmc/fabric-installer/0.11.1/fabric-installer-0.11.1.jar 运行Installer 创建Minecr…