FreeBSD 启用 Rack 作为默认 TCP 栈
Jun 22, 2024
Netflix 使用 FreeBSD 作为流媒体服务器,RACK 协议栈也是他们使用的默认协议栈,而且做了优化。 加载 RACK 驱动 $ sudo kldload tcp_rack $ sudo sysctl net.inet.tcp.functions_default=rack 启动时自动加载 RACK sudo sysrc kld_list+="tcp_rack" 然后编辑 /etc/sysctl.conf,添加或编辑: …
Nginx 降低延迟的一些配置
Jun 17, 2024
首先需要明确需要低延迟的场景:是否需要频繁通讯,比如 IM 类型、WebSocket 类型、SSL 握手、端口转发以及 Keepalive 类型的连接。 开启 tcp_nodelay http { tcp_nodelay on; } stream { tcp_nodelay on; } tcp_nodelay 可以设定在 http 模块和 stream 模块,只要接收都数据就立即发送出去而不需要等待缓冲区满。 …
FreeBSD 配置 WireGuard
Jun 16, 2024
本文适用于 FreeBSD 13.2+ 从 FreeBSD 13.2 开始,WireGuard 驱动已经集成到系统里了,wg 命令默认是可用的。 只需要另外安装 wireguard-tools 就可以轻松配置 WireGuard 了: $ sudo pkg install wireguard-tools 生成所需的密钥 私钥: $ wg genkey CJGUcc1TUZztJr8iI59qIlAOHnPuEwazN9nvFn+Lt0E= 公钥: …
FreeBSD 设置固定的 DNS
Jun 13, 2024
在使用 DHCP 方式获取 IP 的方式下,使用固定的 DNS 地址,需要编辑 /etc/dhclient.conf # # This file is required by the ISC DHCP client. # See ``man 5 dhclient.conf'' for details. # # In most cases an empty file is sufficient for most people as the # defaults are usually fine. # supersede domain-name-servers 1.1.1.1, 8.8.8.8; 保存,重启后生效。 …
OpenSSL 创建自签名证书
Jun 10, 2024
由于 RSA 2048 已经不再安全,使用 RSA 4096 又太慢了,所以这次创建使用 ECC 384 算法的自签名证书。 openssl ecparam -genkey -name secp384r1 -out privkey.pem openssl req -new -key privkey.pem -out csr.pem -config server.cnf Tips: 查看完整的椭圆算法列表 openssl ecparam -list_curves,推荐使用的算法是 prime256v1 和 secp384r1,Let’s Encrypt 的 ECC 证书使用的是 prime256v1。 …
使用 Nginx 反向代理的时候和上游服务器也使用 SSL 连接
Jun 09, 2024
当 Nginx 反向代理和上游服务器部署在不同位置的时候,如果 Nginx 和上游服务器通过 HTTP 通讯,就会存在中间人攻击的安全隐患。 比较安全的方式是反向代理服务器和上游服务器之间也通过 SSL 加密通讯来保证数据安全。 …
Nginx 负载均衡解决同 IP 连接漂移的问题
Jun 07, 2024
问题场景:设置了多个服务器以后,同一个客户端进来的连接会分配到不同的服务器上,在做端口转发的时候就会出现问题,必须保证同一个 IP 来源的请求始终对应同一台服务器。 …
修复 FreeBSD 大版本升级后出现的依赖库不能加载的问题
Jun 05, 2024
AWS 的 Lightsail 提供的 FreeBSD 版本是 13.1 ,使用 freebsd-update 升级到 14.1 后,出现了以下错误: $ pkg update ld-elf.so.1: Shared object "libssl.so.111" not found, required by "pkg" 修复方法,强制重新安装 pkg 修复依赖问题: $ pkg-static install -f pkg pkg-static: Warning: Major OS version upgrade detected. Running "pkg bootstrap -f" recommended Updating FreeBSD repository catalogue... pkg-static: Repository FreeBSD has a wrong packagesite, need to re-create database Fetching meta.conf: 100% 178 B 0.2kB/s 00:01 Fetching data.pkg: 100% 7 MiB 7.3MB/s 00:01 Processing entries: 100% FreeBSD repository update completed. 34088 packages processed. All repositories are up to date. The following 1 package(s) will be affected (of 0 checked): Installed packages to be REINSTALLED: pkg-1.21.3 (ABI changed: 'freebsd:13:x86:64' -> 'freebsd:14:x86:64') Number of packages to be reinstalled: 1 The process will require 4 MiB more space. 12 MiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching pkg-1.21.3.pkg: 100% 12 MiB 12.4MB/s 00:01 Checking integrity... done (0 conflicting) [1/1] Reinstalling pkg-1.21.3... [1/1] Extracting pkg-1.21.3: 100% 然后再强制更新一下 pkg 的数据库: …
使用 OpenSSL 获取某个域名的证书指纹
Jun 04, 2024
先获取服务器的证书,保存为 lvv.me.pem: $ openssl s_client -servername lvv.me -connect lvv.me:443 < /dev/null 2>/dev/null | openssl x509 -outform pem > lvv.me.pem 获取这个证书的指纹信息: $ openssl x509 -noout -fingerprint -sha256 -inform pem -in lvv.me.pem 8D:62:36:52:AD:5A:53:D1:FC:EA:5D:0A:35:CF:2F:60:5C:8C:74:42:2A:C6:AB:11:05:70:FD:A9:85:8A:0B:E0
FreeBSD 修改 lo0 接口的 MTU 值
Jun 02, 2024
FreeBSD 默认的回环接口 lo0 的 MTU 是 16384: lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384 options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 groups: lo nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> 可以通过配置提高到 65535: 编辑 /etc/rc.conf 文件,添加下面两行配置: ifconfig_lo0="inet 127.0.0.1/8 mtu 65535" ifconfig_lo0_ipv6="inet6 ::1/128 mtu 65535" 也可以使用 sysrc 来操作 rc.conf: …