TinyCore Linux的CorePure64运行WireGuard占用情况

配置占用挺低,使用PVE的QM跑的Tiny Core Linux运行wireguard

http://www.tinycorelinux.net/17.x/x86_64/release/

http://tinycorelinux.net/downloads.html

我装的是core的,全程使用AI指导安装

运行着WireGuard、sshd

tc@box:~$ free -hm
              total        used        free      shared  buff/cache   available
Mem:         471.1M       34.4M      374.3M       27.0M       62.4M      398.1M
Swap:         76.7M           0       76.7M
tc@box:~$ df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
rootfs               rootfs        424.0M     27.0M    397.0M   6% /
tmpfs                tmpfs         235.5M         0    235.5M   0% /dev/shm
/dev/sda1            ext4          990.6M     37.1M    937.6M   4% /mnt/sda1
/dev/loop0           squashfs        3.1M      3.1M         0 100% /tmp/tcloop/openssl
/dev/loop1           squashfs        2.1M      2.1M         0 100% /tmp/tcloop/openssh
/dev/loop2           squashfs        2.0M      2.0M         0 100% /tmp/tcloop/libdb
/dev/loop3           squashfs       92.0K     92.0K         0 100% /tmp/tcloop/db
/dev/loop4           squashfs      628.0K    628.0K         0 100% /tmp/tcloop/iproute2
/dev/loop5           squashfs        1.3M      1.3M         0 100% /tmp/tcloop/ipv6-netfilter-6.18.35-tinycore64
/dev/loop6           squashfs      420.0K    420.0K         0 100% /tmp/tcloop/iptables
/dev/loop7           squashfs      356.0K    356.0K         0 100% /tmp/tcloop/libnl
/dev/loop8           squashfs      256.0K    256.0K         0 100% /tmp/tcloop/ncursesw
/dev/loop9           squashfs      156.0K    156.0K         0 100% /tmp/tcloop/readline
/dev/loop10          squashfs      568.0K    568.0K         0 100% /tmp/tcloop/bash
/dev/loop11          squashfs       40.0K     40.0K         0 100% /tmp/tcloop/jansson
/dev/loop12          squashfs      252.0K    252.0K         0 100% /tmp/tcloop/gmp
/dev/loop13          squashfs        8.0K      8.0K         0 100% /tmp/tcloop/libmnl
/dev/loop14          squashfs       72.0K     72.0K         0 100% /tmp/tcloop/libnftnl
/dev/loop15          squashfs      456.0K    456.0K         0 100% /tmp/tcloop/nftables
/dev/loop16          squashfs       24.0K     24.0K         0 100% /tmp/tcloop/openresolv
/dev/loop17          squashfs       88.0K     88.0K         0 100% /tmp/tcloop/wireguard-tools

sshd和Wireguard都需要手动安装组件包

tce-load -wi openssh
tce-load -wi amneziawg-tools

安装基础网络包

tce-load -wi iproute2 iptables libnl bash

我用的是静态IP,需要手动配置

sudo ifconfig eth0 XX.XX.XX.XX netmask 255.255.255.0 up
sudo route add default gw 172.20.101.254
echo 'nameserver 223.5.5.5' | sudo tee /etc/resolv.conf 

启动sshd

sudo /usr/local/etc/init.d/openssh restart

加载WireGuard的依赖

sudo modprobe libchacha20poly1305
sudo modprobe libcurve25519
sudo modprobe wireguard

可以使用命令搜索组建

tce-ab

记得修改持久化的相关脚本文件

sudo vi /opt/bootlocal.sh

先联网,执行这个后才能安装

tce-load -wi tc-install.tcz

安装命令,任意一个,具体忘了

tc-install.sh

tc-install

=====

AI

=====

Tiny Core Linux 部署 WireGuard 与持久化笔记

适用环境

  • 发行版:Tiny Core Linux 17.x CorePure64
  • 内核版本:6.x-tinycore64
  • 扩展目录:/mnt/sda1/tce/optional
  • 持久化备份:/mnt/sda1/tce/mydata.tgz
  • 扩展启动列表:/mnt/sda1/tce/onboot.lst
  • 备份清单:/opt/.filetool.lst
  • 启动脚本:/opt/bootsync.sh、/opt/bootlocal.sh
  • 系统用户:tc
  • 网络管理:DHCP,由 /etc/init.d/dhcp.sh 处理
  • 说明:文中 xx.xx.xx.xx 代表实际使用时需要替换的 IP 地址。

一、加载 WireGuard 内核模块

Tiny Core 的 WireGuard 内核模块存在依赖关系,应按顺序加载:

sudo modprobe libchacha20poly1305
sudo modprobe libcurve25519
sudo modprobe ipv6
sudo modprobe wireguard

检查是否加载成功:

sudo lsmod | grep wireguard

正常结果:

wireguard              57344  0
ipv6                  393216 17 wireguard,[permanent]
libchacha20poly1305    12288  1 wireguard
libcurve25519          61440  1 wireguard

如果单独执行 sudo modprobe wireguard,可能出现:

unknown symbol in module

原因是依赖模块尚未加载。加载 ipv6 后再次执行即可。

查看模块信息:

sudo modinfo wireguard

重点查看:binary file:

vermagic
depends

vermagic 必须与当前内核版本一致,否则模块即使存在于磁盘也无法加载。

二、安装 WireGuard 工具

Tiny Core 使用 tce-load 管理扩展。

下载并立即加载:

tce-load -i wireguard-tools.tcz

下载并在每次启动时自动加载:

tce-load -wi wireguard-tools.tcz

安装后会提供:binary file:

/usr/local/bin/wg
/usr/local/bin/wg-quick

确认版本:

which wg
wg --version
which wg-quick
wg-quick --version

同时会下载依赖,例如:binary file:

libnl.tcz
openresolv.tcz
wireguard-tools.tcz

查看磁盘上的扩展:

ls /mnt/sda1/tce/optional | grep wireguard
ls /mnt/sda1/tce/optional | grep resolv

查看开机自动加载列表:

cat /mnt/sda1/tce/onboot.lst

三、WireGuard 配置文件位置

配置文件目录:

/etc/wireguard

创建目录:

sudo mkdir -p /etc/wireguard

建议为每个接口创建一个独立文件,例如:

sudo vi /etc/wireguard/wg0.conf
sudo vi /etc/wireguard/wg1.conf

配置文件权限应限制为仅 root 可读写:

sudo chmod 600 /etc/wireguard/wg0.conf

启动接口:

sudo wg-quick up wg0

停止接口:

sudo wg-quick down wg0

查看接口状态:

sudo wg show
sudo wg show wg0

必须使用 sudo。普通用户执行会返回:

Unable to access interface: Operation not permitted

这不是 WireGuard 隧道故障,只是权限不足。

四、配置文件的字段结构

WireGuard 配置文件分为两个主要部分:

[Interface]
...

[Peer]
...

其中:

  • Interface 描述本机身份、地址和监听端口;
  • Peer 描述对端公钥和允许通过的网段;
  • Address 是本机在隧道内部的地址;
  • AllowedIPs 决定哪些流量进入该隧道;
  • Endpoint 是服务端的公网地址和端口;
  • PersistentKeepalive 用于 NAT 环境下保持连接。

AllowedIPs 必须使用标准网段地址,例如:

AllowedIPs = 192.168.0.0/24

不能写成:binary file:

AllowedIPs = 192.168.0.1/24

后者会触发警告:

Warning: AllowedIP has nonzero host part

五、开机自动建立隧道

编辑启动脚本:

sudo vi /opt/bootlocal.sh

添加:

wg-quick up wg0

/opt/bootsync.sh 默认以后台方式调用该脚本:

/opt/bootlocal.sh &

因此 bootlocal.sh 不应包含长时间阻塞的命令。如果需要在网络就绪后启动,可以加入短暂等待:

sleep 3
wg-quick up wg0

但不要设置过长的 sleep,否则会影响 Tiny Core 启动流程。

六、安装并配置 SSH

安装 openssh

tce-load -wi openssh.tcz

检查是否已经安装:

tce-status -i | grep -i openssh
ls /mnt/sda1/tce/optional | grep openssh

Tiny Core 的 OpenSSH 启动脚本位于:

/usr/local/etc/init.d/openssh

查看 Tiny Core 提供的初始化脚本:

ls /usr/local/etc/init.d

生成主机密钥

首次安装后,建议显式生成主机密钥:

sudo ssh-keygen -A

生成的文件通常包括:binary file:

ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub
ssh_host_ed25519_key
ssh_host_ed25519_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub

复制并修改 SSH 服务端配置

Tiny Core 的 OpenSSH 配置位于:binary file:

/usr/local/etc/ssh

原文件通常以 .orig 结尾。复制成可编辑版本:

sudo cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config

然后编辑:

sudo vi /usr/local/etc/ssh/sshd_config

需要关注的基本项:binary file:

Port 22
AddressFamily any
ListenAddress 0.0.0.0
PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes
HostKey /usr/local/etc/ssh/ssh_host_ed25519_key
HostKey /usr/local/etc/ssh/ssh_host_ecdsa_key
HostKey /usr/local/etc/ssh/ssh_host_rsa_key

测试配置文件是否有效:

sudo /usr/local/sbin/sshd -t

没有输出通常表示语法正常。

启动 SSH

sudo /usr/local/etc/init.d/openssh start

查看监听状态:

netstat -lntu | grep :22

前台运行并输出错误:

sudo /usr/local/sbin/sshd -D -e

停止服务:

sudo /usr/local/etc/init.d/openssh stop

开机启动 SSH

编辑:binary file:

sudo vi /opt/bootlocal.sh

建议写成:binary file:

#!/bin/sh
# put other system startup commands here

/usr/local/etc/init.d/openssh start

sleep 3

wg-quick up wg0

SSH 应在 WireGuard 之前启动,避免隧道建立期间影响管理连接。

七、用户密码持久化

设置用户密码:

sudo passwd tc

Tiny Core 的账户信息位于:binary file:

/etc/passwd
/etc/shadow

这两个文件不会自动进入备份。要让修改后的密码重启后仍然有效,需要加入备份清单。

八、Tiny Core 持久化机制

Tiny Core 在内存中运行,修改 /etc、/usr/local 等内容后,只有被写入备份清单的文件才会保存。

备份命令:

filetool.sh -b

成功结尾应为:

Backing up files to /mnt/sda1/tce/mydata.tgz Done.

如果结尾不是 Done.,说明备份失败,不能认为配置已经保存。

查看当前备份清单:

cat /opt/.filetool.lst

查看备份内容:

tar -tzf /mnt/sda1/tce/mydata.tgz

备份路径规则

  • 使用相对于根目录的路径;
  • 不要写前导 /;
  • 目录会递归备份;
  • 不存在的路径会导致 tar 报错并中断;
  • 指向 /tmp/tcloop 的符号链接不适合整体备份。

正确写法:binary file:

etc/wireguard
opt/bootlocal.sh
usr/local/etc/ssh/ssh_host_ed25519_key

错误写法:binary file:

/etc/wireguard
/usr/local/etc/ssh/ssh_host_ed25519_key

九、推荐的 .filetool.lst

opt
home
home/tc
etc/wireguard
etc/passwd
etc/shadow
usr/local/etc/ssh/ssh_host_ecdsa_key
usr/local/etc/ssh/ssh_host_ecdsa_key.pub
usr/local/etc/ssh/ssh_host_ed25519_key
usr/local/etc/ssh/ssh_host_ed25519_key.pub
usr/local/etc/ssh/ssh_host_rsa_key
usr/local/etc/ssh/ssh_host_rsa_key.pub
usr/local/etc/ssh/sshd_config

其中:binary file:

opt

已经覆盖:binary file:

/opt/bootlocal.sh
/opt/bootsync.sh
/opt/shutdown.sh
/opt/tcemirror

不要整体备份 SSH 目录

ls -l /usr/local/etc/ssh

部分文件是指向 Tiny Core 循环挂载目录的符号链接:

moduli -> /tmp/tcloop/openssh/usr/local/etc/ssh/moduli
ssh_config.orig -> /tmp/tcloop/openssh/usr/local/etc/ssh/ssh_config.orig
sshd_config.orig -> /tmp/tcloop/openssh/usr/local/etc/ssh/sshd_config.orig

如果直接备份:binary file:

usr/local/etc/ssh

tar 可能遇到:binary file:

No such file or directory

并中断整个备份。应只备份主机密钥和修改后的配置文件。

十、完整部署流程

# 加载模块
sudo modprobe libchacha20poly1305
sudo modprobe libcurve25519
sudo modprobe ipv6
sudo modprobe wireguard

# 安装组件
tce-load -wi wireguard-tools
tce-load -wi openssh

# 生成 SSH 主机密钥
sudo ssh-keygen -A

# 复制并修改 SSH 配置
sudo cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config
sudo vi /usr/local/etc/ssh/sshd_config

# 设置用户密码
sudo passwd tc

# 创建 WireGuard 配置
sudo mkdir -p /etc/wireguard
sudo vi /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf

# 启动服务
sudo /usr/local/etc/init.d/openssh start
sudo wg-quick up wg0

# 检查状态
sudo wg show wg0
netstat -lntu | grep :22

# 配置开机启动
sudo vi /opt/bootlocal.sh
sudo vi /opt/.filetool.lst

# 保存
filetool.sh -b

十一、修改 WireGuard 配置文件后

编辑配置:

sudo vi /etc/wireguard/wg0.conf

重新应用配置:binary file:

sudo wg-quick down wg0
sudo wg-quick up wg0

检查:binary file:

sudo wg show wg0
ip route

修改完成后保存:binary file:

filetool.sh -b

十二、修改 SSH 配置后

编辑配置:

sudo vi /usr/local/etc/ssh/sshd_config

测试配置:binary file:

sudo /usr/local/sbin/sshd -t

重新加载或重启:binary file:

sudo /usr/local/etc/init.d/openssh restart

确认监听:binary file:

netstat -lntu | grep :22

保存:binary file:

filetool.sh -b

十三、客户端主机密钥变化

如果 SSH 主机密钥没有持久化,每次重启可能重新生成。客户端连接时会提示:

Host key has changed

在客户端删除旧记录:

ssh-keygen -R xx.xx.xx.xx

然后重新连接。

为避免该问题,应将 SSH 主机密钥加入 .filetool.lst 并重新执行 filetool.sh -b。

十四、网络地址与启动顺序

Tiny Core 默认使用 DHCP。网络脚本位于:binary file:

/etc/init.d/dhcp.sh

启动参数通常包含:binary file:

tce=UUID="..."

不要随意加入:binary file:

ip=
nodhcp

否则可能覆盖现有网络配置。

bootlocal.sh 在系统网络配置之后执行,因此可以直接启动 SSH 和 WireGuard。不要在其中重复执行:binary file:

ifconfig eth0 ...
route add default gw ...
udhcpc ...

除非明确将 Tiny Core 改为静态 IP。

十五、防火墙注意事项

当前 Tiny Core 内核可能没有提供:

ip_tables
iptable_filter

执行:binary file:

sudo iptables -L

可能返回:binary file:

can't initialize iptables table `filter': Table does not exist

此时不要反复执行:binary file:

iptables -F

这些命令不会生效。应确认 Tiny Core 提供的是 legacy iptables、nftables 还是 nf_tables 后端:

iptables --version
which nft
sudo modprobe nf_tables

十六、排错顺序

模块未加载

sudo lsmod | grep wireguard
sudo modprobe wireguard
dmesg | tail -10
sudo modinfo wireguard

工具不存在

which wg
which wg-quick
tce-status -i | grep wireguard
ls /mnt/sda1/tce/optional | grep wireguard

接口已建立但没有握手

sudo wg show wg0
ip route

重点查看:binary file:

latest handshake
transfer
endpoint

只有发送、没有接收,通常说明:

  • 对端地址或端口不正确;
  • UDP 端口被中间网络阻断;
  • 对端没有添加本机公钥;
  • 对端 AllowedIPs 中没有包含本机地址;
  • 两端使用的协议版本不一致。

SSH 无法连接

netstat -lntu | grep :22
ps aux | grep sshd
sudo /usr/local/sbin/sshd -t
sudo /usr/local/sbin/sshd -D -e

重启后配置丢失

tar -tzf /mnt/sda1/tce/mydata.tgz | grep <关键词>
cat /opt/.filetool.lst

如果没有对应文件,修改 .filetool.lst 并重新执行:

filetool.sh -b

十七、需要长期记住的原则

  1. Tiny Core 的修改在内存中进行,重启不自动保存;
  2. 每次修改系统文件后都要执行 filetool.sh -b;
  3. filetool.sh -b 结尾必须是 Done.;
  4. .filetool.lst 使用相对路径,不带前导 /;
  5. 不存在的备份路径会导致整个 tar 中断;
  6. SSH 目录中的 .orig 文件是符号链接,不能整体备份;
  7. SSH 主机密钥必须显式备份,否则重启后客户端提示主机密钥变化;
  8. WireGuard 模块必须按依赖顺序加载;
  9. wg show 必须使用 sudo;
  10. AllowedIPs 必须写网段地址,不能写主机地址;
  11. wg-quick 可以自动创建地址、接口和路由;
  12. SSH 应在 WireGuard 之前启动;
  13. 使用 DHCP 时不要重复配置网卡地址;
  14. ping 无法测试 WireGuard 的 UDP 端口;
  15. 两端协议版本必须一致。

十八、验证清单

sudo lsmod | grep wireguard
which wg wg-quick
ls -l /usr/local/etc/ssh/ssh_host_*_key
cat /usr/local/etc/ssh/sshd_config | grep -v '^#' | grep -v '^$'
netstat -lntu | grep :22
sudo wg show wg0
ip addr
ip route
cat /opt/.filetool.lst
filetool.sh -b
tar -tzf /mnt/sda1/tce/mydata.tgz | grep -E "wireguard|ssh_host|bootlocal|passwd|shadow"

重启后应同时确认:binary file:

SSH 监听 22 端口
WireGuard 接口存在
隧道显示 latest handshake
路由包含隧道网段
/etc/passwd 与 /etc/shadow 中的账户信息未恢复默认值
系统与运维

PVE-CT-安装kwrt-rootfs.tar.gz

2026-10-9 17:18:07

系统与运维

TinyCore Linux的CorePure64运行WireGuard占用情况

2026-10-17 19:41:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
❯
个人中心
今日签到
有新私信 私信列表
搜索