分类
Windows 笔记

Win10 开启 WSL2

WSL2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL2 不是传统的 VM 体验。

Win10从2004版开始支持WSL2,开启方法:打开设置-应用

注:WSL2是基于Hyper-V虚拟机,打开后,VMware和Virtualbox需要升级到最新版才能兼容。但是安卓模拟器无法使用。

分类
Nginx PHP 笔记

站点优化笔记

本站开通也有好几年了,除了更新几次主题,自定义几个样式和几处微调,没什么做大的改动。这次心血来潮把它优化一波,为后面使用打下基础。

次此优化主要是:

  1. 优化php配置
  2. 优化wordpress一些不适合国情的东西(你懂的)
  3. 优化链接便于搜索引擎收录
分类
笔记 网络

使用 Zerotier 组建虚拟局域网实现内网穿透

首先 Zerotier 是什么呢? Zerotier 是一拨人为了解决网络复杂,以及因特网过于中心化而提出的解决方案。他们使用点对点 的网络,并且在上面附加一层 VXLAN-like 虚拟网络层 来提高局域网的可见性,安全性。

所以简单来说,Zerotier 通过创建一个虚拟网络,把你的设备添加到这个网络,那么在这个网络内,你的设备就像在同一个路由器内那样可以使用各种端口。

免费版 Zerotier 支持局域网内 100 个设备。Zerotier 支持 Windows、macOS、Linux 三大桌面平台,iOS、Android 两大移动平台,QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 OpenWrt/LEDE 开源路由器项目。

官网地址:

使用

  • 注册 ZeroTier
  • 创建 Network 私有局域网,得到一个 16 位的 Network ID
  • 在需要加入虚拟局域网的设备上安装各个平台客户端,设备会生成一个 10 位的 ZeroTier address
  • 在设备上加入刚刚创建的 Network ID zerotier-cli join <network id>(或在网页上添加 ZeroTier address)
  • 在官网 network 页面上找到设备,在设备前勾选,信任设备,获得局域网 IP

Windows 系统用命令 ipconfig,Linux/Unix 用命令 ifconfig,然后会看到一个虚拟网卡,有一个 IP 地址。这个 IP 和在官网看到的 network 下的 IP 是一致的,只有同在该虚拟网络下的机器才能访问。

接下来,你可以设置远程桌面(端口号 3389),或者 FTP 服务(端口 21),或者搭建内网网站(端口 80),各种玩法都可以尝试咯。

图文教程可以参考这篇文章

对比

和 ngrok 和 frp 功能类似,但是 ZeroTier 明显入手简单。ZeroTier 只有客户端开源,服务端并没有开源。而 ngrok 和 frp 都是完全开源。但是 ngrok 和 frp 严重依赖于公网固定 IP 的 VPS,是一个中心化的内网穿透工具,一旦中心节点挂掉,那么所有的节点都无法工作。Zerotier 帮助用户实现了服务端,虽然安全性有待考验,但至少还是能用状态。

另外很多人提到的 N2N 开上去也不错,不过我还没怎么用过。等以后尝试过后再补上。

分类
PHP 笔记

去除WordPress文章页标题后部的站点名称

wordpress文章内容详情页的title默认结构为 文章标题-站点名称,本文旨在记录如何去除后半部分“-站点名称”的探索,找到wp-includes文件夹内general-template.php,搜索

// Append the description or site title to give context.
if ( is_front_page() ) {
	$title['tagline'] = get_bloginfo( 'description', 'display' );
} else {
	$title['site'] = get_bloginfo( 'name', 'display' );
}

将else注释掉即可,因为后续$title[‘site’] 为空的话会自动被舍弃掉,不会被$title数组的自动合并所影响。

分类
笔记

Nextcloud开启外部存储

Nextcloud默认是没有开启外部存储功能的,需在手动启用插件。

然后在设置里可以看到。设置Nextcloud所有用户都能使用外部存储。

如果Nextcloud是使用Docker部署,可能会遇到没有安装samba客户端问题:“smbclient” 未安装。无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”。请联系管理员安装。

分类
笔记

NAPT类型测试

在内网穿透传输大量数据时如果都经过服务器中转的话,这样会对服务器端带宽压力比较大。

一种新的代理类型 XTCP 来解决这个问题,XTCP 模式下可以在传输大量数据时让流量不经过服务器中转。

由此,实现内外内网穿透有 点对点穿透 和 服务器中转穿透 两种不同途径。

然而,并不是所有网络环境下,都可以采用 点对点穿透 ,在了解 点对点穿透 前,需要先了解NAT分类。

分类
Java 大数据 笔记

初识Sharding-JDBC 4.0

昨天(1月14日)ShardingSphere 4.0.0 发布。发布说明:ShardingSphere 4.0.0 发布,ShardingSphere 四周年贺礼

基于4.0版简单写了个Demo,主要是测试数据分片,读写分离,数据脱敏。

数据分片

数据分片应该是Sharding-JDBC最核心的功能。主要是根据自定义规则解析SQL,把数据放到不同库表中,从不同库表中查询,组装数据并返回最终结果。这种水平分片的方
式相对于垂直分片,它不再将数据根据业务逻辑分类,而是通过某个字段(或某几个字段),根据某种规则将数据分散至多个库或表中,每个分片仅包含数据的一部分。数
据分片的核心概念。

分类
Java 笔记

JVM 性能调优监控工具

现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题:

  • OutOfMemoryError,内存不足
  • 内存泄露
  • 线程死锁
  • 锁争用(Lock Contention)
  • Java进程消耗CPU过高
  • ……

这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。

分类
笔记

Wireshark解密HTTPS流量

原理

我们先回顾一下SSL/TLS的整个握手过程:

  • Clienthello:发送客户端的功能和首选项给服务器,在连接建立后,当希望重协商、或者响应服务器的重协商请求时会发送。
  • version:客户端支持的最佳协议版本
  • Random:共32字节,28字节随机数,4字节额外信息,受客户端时钟影响(为了避免浏览器指纹采集,现在一般会对4字节时钟做扭曲)
  • Session ID:32字节随机数,用于和服务器重建会话,为空表示新建会话
  • cipher suit:客户端支持的所有密码套件,按优先级排列
  • Compression:客户端支持的压缩算法,默认无压缩
  • Extensions:由任意数量的扩展组成,携带额外数据
  • ServerHello:
  • 选择客户端提供的参数反馈客户端
  • 服务器无需支持客户端支持的最佳版本,如果服务器不支持客户端版本,可以提供其他版本以期待客户端可以接受
  • Certificate:
  • 用于携带服务器X.509证书链
  • 主证书必须第一个发送,中间证书按照正确的顺序跟在主证书之后
  • 服务器必须保证发送的证书和选择的算法套件一致
  • Certificate消息时可选的
  • ServerKeyExchange: 携带密钥交换的额外数据,取决于加密套件
  • ServerHelloDone:服务器已将所有预计的握手消息发送完毕
  • ClientkeyExchange:携带客户端为密钥交换提供的信息
  • ChangeCipherSpec:发送端已取得用以连接参数的足够的信息
  • Finish:握手完成,消息内容加密,双方可以交换验证,整个握手完整性所需的数据
  • 算法:verrify_data = PRF(master_secret , finished_label,hash(handshake_message))

要解密HTTPS流量,需要得到加密密钥,加密密钥由主密钥、客户端随机数、服务器随机数生成。由上述握手过程可知,客户端随机数和服务器随机数在双方握手消息中传递,而主密钥(master_secret)则由预主密钥(pre_master_secret)结合两个随机数生成。预主密钥通过密码套件中的密钥交换算法进行交换(DH、RSA)。

因此,通过Wireshark解密HTTPS,可以从两个地方下手:1、密钥交换算法选择RSA,然后提取服务器的私钥,将私钥导入Wireshark,通过Wireshark解密密钥交换过程中传递的预主密钥,再结合之前的客户端和服务器随机数生成主密钥,进一步生成加密密钥,即可解密后续抓取到的加密报文。2、直接从客户端提取主密钥,结合客户端和服务器随机数生成加密密钥,实现对加密报文的解密。

下面演示两种方法解密HTTPS流量。

分类
Linux 笔记

Gnome 3桌面调教

Gnome是很多Linux发行版默认的桌面,最新是Gnome 3.x版本。Gnome 3非常简洁,简洁到只有一个空荡荡的桌面。需要调教一番才能更高效率地工作。

Gnome 3优化工具-Gnome Tweaks

Gnome Tweaks是一个图形化配置Gnome 3的工具。它不仅可以自定义Gnome 3桌面,还能集中管理Gnome 3的插件扩展。后面安装的Gnome 3插件都能在Gnome Tweaks中管理,开启/禁用及配置。

在Ubuntu中安装:apt install gnome-tweak

Gnome 3扩展-Dynamic Top Bar

Dynamic Top Bar可以把Gnome 3顶部栏透明化。不过如果使用浅色的壁纸,顶部栏的白色字体会看不清。

Gnome 3扩展-Hide Top Bar

Hide Top Bar可以把Gnome 3顶部栏设为自动隐藏,增大可视面积。