AI 中 100% 缩放显示与实际像素问题

illustrator 中遇到一个实际编辑的大小和导出图片后缩放大小不一致的问题,最开始以为是文档栅格效果设置的问题,实际修改无效果。

解决方案:https://illustrator.uservoice.com/forums/333657-illustrator-desktop-feature-requests/suggestions/33253402-100-size-is-actually-actual-size

取消首选项中:常规->以 100% 缩放比例显示打印大小。

Windows Server 2019 部署 L2TP/ipsec 服务的一些坑

关于部署远程服务的文章视频网上内容已经很多了:

部署:https://www.snel.com/support/how-to-set-up-an-l2tp-ipsec-vpn-on-windows-server-2019/

自动路由规则添加:http://woshub.com/add-routes-after-connect-vpn-windows/

但是有些坑要注意:Win 10 内置的 L2TP/ipsec 的客户端默认不能连接NAT后面的L2TP服务器,需要按照说明处理:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md#windows-%E9%94%99%E8%AF%AF-809

另外建议首次配置不要用 Windows 设备当测试客户端(包括Windows Server 自己),建议用其它设备 iOS/MAC/Android 连接 L2TP 服务器。

需要给用户设置拨入中的网络访问权限为允许。

另外编写了一个快速配置 L2TP 客户端的 Win 脚本:https://github.com/frimin/l2tp-ipsec-setup-client.ps1

使用 Linux 内置 tc 命令来模拟弱网环境

大多数 Linux 发行版中都带有流量控制的命令 tc。

关于 tc 的 qdisc 可以文末的文章可以理解更多 tc 的 qdisc 相关的内容。

这里直接给出模拟弱网的命令。

直接作用于指定物理网卡:

# 200m 延迟 30ms 抖动 + 10%丢包 + 10%重复 + 10% 乱序
tc qdisc add dev ens256 root netem delay 200ms 30ms loss 10% duplicate 10% reorder 10%

作用于网卡下指定的端口,这里以 2000 端口为例:

tc qdisc add dev ens256 root handle 1: htb
tc class add dev ens256 parent 1: classid 1:10 htb rate 10000mbit
tc qdisc add dev ens256 parent 1:10 handle 10: netem delay 200ms 30ms loss 10% duplicate 10% reorder 10%
tc filter add dev ens256 parent 1:0 protocol ip prio 1 u32 match ip dport 2000 0xffff flowid 1:10

更复杂一点的情况,若当前机器为路由设备,出口网卡为 ens192, 内部网络为 ens256 网段为 192.168.200.0/24, 对传入该网段 2000 端口和从 2000 端口传出的数据全部执行流量控制:

tc qdisc del dev ens192 root
tc qdisc add dev ens192 root handle 1: htb
tc class add dev ens192 parent 1: classid 1:10 htb rate 10000mbit
tc qdisc add dev ens192 parent 1:10 handle 10: netem delay 150ms 30ms
tc filter add dev ens192 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.200.0/24 match ip sport 2000 0xffff flowid 1:10

tc qdisc del dev ens256 root
tc qdisc add dev ens256 root handle 1: htb
tc class add dev ens256 parent 1: classid 1:10 htb rate 10000mbit
tc qdisc add dev ens256 parent 1:10 handle 10: netem delay 150ms 30ms
tc filter add dev ens256 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.200.0/24 match ip dport 2000 0xffff flowid 1:10

移除流量控制规则:

 tc qdisc del dev ens256 root

查看状态:

tc -s qdisc show dev ens256
tc -s class show dev ens256
tc -s filter show dev ens256

其他相关命令

# 删除 filter 
tc filter del dev ens256 parent 1: handle 800::800 prio 1 protocol ip u32

参考文章

tc(8), tc-netem(8)
https://arthurchiao.art/blog/lartc-qdisc-zh/ (页面快照备份)

使用 ntpd 时间同步

有些服务需要依赖正确的时间,本地部署 ntpd 服务来平滑同步时间:

rm -f /etc/localtime 
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

安装 ntp

yum install ntp -y

http://www.pool.ntp.org/zone/cn 获取 ntp 同步服务地址。编辑 /etc/ntp.conf 填入新的同步地址:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

或者使用阿里云的 ntp 同步服务器:

server ntp.aliyun.com iburst minpoll 6 maxpoll 10
server ntp1.aliyun.com iburst minpoll 6 maxpoll 10
server ntp2.aliyun.com iburst minpoll 6 maxpoll 10
server ntp3.aliyun.com iburst minpoll 6 maxpoll 10
server ntp4.aliyun.com iburst minpoll 6 maxpoll 10
server ntp5.aliyun.com iburst minpoll 6 maxpoll 10
server ntp6.aliyun.com iburst minpoll 6 maxpoll 10

开机启动和启动 ntpd 服务:

systemctl enable ntpd
systemctl start ntpd

也可以停止 ntpd 服务后进行手动同步:

systemctl stop ntpd
ntpdate 0.pool.ntp.org

CentOS 中部署 DNS 服务

CentOS 下的名字服务的部署和基础配置:

安装包

先安装相关软件包。

yum install bind-chroot bind-utils -y

编辑 /etc/named.conf 文件,在 option 配置中编辑 listen-on 与 allow-query 选项,前者添加额外的服务监听端口,后者添加授权查询请求主机。

options {
        listen-on port 53 { 127.0.0.1; 10.1.1.1; 10.1.2.1; };
        ...
        allow-query     { localhost; 10.1.1.0/24; 10.1.2.0/24; };
        ....
}

zone "test.local" IN {
        type master;
        file "test.local.zone";
        allow-update { none; };
};

创建和编辑简单区域文件

创建文件 /var/named/test.local.zone 并编辑以下内容

$ORIGIN test.local.
$TTL 86400
@       IN  SOA dns1.test.local. root.test.local. (
        2021122501      ; serial
        21600           ; refresh after 6 hours
        3600            ; retry after 1 hour
        604800          ; expire after 1 week
        86400 )         ; minimum TTL of 1 day

@       IN  NS  dns1.test.local.
dns1    IN  A   10.1.1.1
@       IN  A   10.1.1.1
www     IN  CNAME       test.local.

编辑完成名字区域文件后建议使用命令检查一下合法性:

named-checkzone test.local /var/named/test.local.zone

启动名字服务:

systemctl enable named-chroot
systemctl start named-chroot
继续阅读“CentOS 中部署 DNS 服务”

直通 SATA 设备到 ESXi 虚拟机中

SSH 连接到 ESXi,列出所有设备:

 ls -l /vmfs/devices/disks

从设备创建 vmdk:

vmkfstools -z /vmfs/devices/disks/t10.ATA_____HGST_HDN726050ALE610____________________NAG4P4YX____________ "/vmfs/volumes/Samsung 850 Pro/Ubuntu Storage/HGST_RDM_1.vmdk"

之后就可以添加硬盘到虚拟机中。

参考文章

https://gist.github.com/Hengjie/1520114890bebe8f805d337af4b3a064

使用树莓派 GPIO 端口控制继电器开启主机

安装 ESXi 的主机因为是用的家用机主板,兼容性原因网卡 PICE 开机不能使用,主板仅支持异常断电自启。在异常断电之后,有远程物理按下开机的需求。

PC家用机开机本质就是把主板上的 Power Switch 针脚连接到机箱上,按钮按下给两个针脚路后主板开机。

想起树莓派有 GPIO 端口,一番研究之下确实可以通过树莓派驱动继电器来实现打开主板电源的功能。

准备工作

需要材料:

1.树莓派3B+ (40针版本GPIO)

2.杜邦线(公对母若干,母对母x3)

3.KV019 继电器(若有更多需求,也可以买多路继电器,这里仅使用单路继电器,仅需¥1.56)

4. 杜邦线一分二(可选,没有的话只能使用树莓派开机,不能按下物理按键)

5.小号平口螺丝刀

继续阅读“使用树莓派 GPIO 端口控制继电器开启主机”

树莓派写入系统镜像后无可用空间的问题

因为某些原因战损了旧的16G存储卡,换用32G之后,使用官方 Raspberry Pi Imager 写入官方镜像后启动发现无可用空间:

输入命令:

sudo raspi-config

然后选择 Advanced Options ->Expand Filesystem 选项,之后 reboot 系统即可。

CentOS 中的 iptables 与 firewalld 防火墙基本策略

在 CentOS 中的 firewalld 是基于 iptables 和一些其它程序构建的,firewalld 使用了一些更加友好的配置方式来实现了对 iptables 操作。同时还扩展了一些 iptables 本身不支持的功能,例如定时防火墙规则。完整的程序以及库依赖见 firewalld 官网 https://firewalld.org/

iptables 通过操作 Linux 内核 netfilter 模块来针对网络包处理。

在操作命令之前请临时关闭机器的 firewalld 防火墙,同时需要确保有物理机的访问权限(或者虚拟机中的物理终端操作权限),有些规则会屏蔽 SSH 22 端口的访问导致无法后续操作。

# 停用 firewalld
systemctl stop firewalld

iptables 基础概念和操作

策略链 (Policy Chain)

iptables 的过滤规则是通过匹配策略链上的规则来决定不同情况下对包的处理,包含了三种策略链:

INPUT: 通过此链来控制传入的连接和包,例如允许来自某些 IP 的 SSH 传入连接。

FORWARD: 转发控制链接,如果你需要在机器上配置路由功能时会用到此链。

OUTPUT: 传出链,当前主机发送请求到外部时匹配此链,通常没有特殊需求时也不会给它配置特殊规则。

可以通过下列命令来查看当前设置的 iptables 规则:

~]# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

策略链默认行为

对应的策略链会有默认的行为。意味着定义了未匹配任何规则的时,链对数据包的处理。

使用如下命令查看当前策略链的行为(同时输出了未匹配此链的数据包数量和流量)。

~]# iptables -L -v | grep policy
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
Chain OUTPUT (policy ACCEPT 821 packets, 293K bytes)

如果当前的策略链的行为不是如上所示,可以通过下列命令来设置接受所有数据的行为:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

可以尝试如下命令丢弃所有情况下的包:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

注意:此时外部主机将无法访问主机,同时主机内部也无法访问外部。

继续阅读“CentOS 中的 iptables 与 firewalld 防火墙基本策略”

ESXi 中安装 OpenWrt 并启用路由功能

OpenWrt 是一个面向嵌入式的Linux系统,常用于刷入路由器替换路由器原有系统。

个人部署的虚拟化环境中所有虚拟机需要一个私有的网络地址,ESXi 本身不提供 DHCP 功能,所以只能找其它解决方案。最开始部署了一个 CentOS7 当作路由器,详细请参考 https://linuxhint.com/centos7_router/ 一文。但是不太方便,最终考虑安装专给路由器诞生的 OpenWrt 系统。

准备工作:ESXi (安装目标),ESXi 中的 Windows (Web配置 OpenWrt),CentOS 或其它 Linux (转换官方镜像)。

继续阅读“ESXi 中安装 OpenWrt 并启用路由功能”