WAN6 接口设置(如果网络通过拨号方式连接,请在 WAN 接口上设置):

配置基本的 IPv6 上网功能,协议选择 DHCPv6 客户端。
防火墙区域一般设置为 WAN 区域。
在接口的 高级设置 中:
关闭 IPv6 源路由。
关闭 委托 IPv6 前缀。

LAN 口配置:

进入 DHCP 服务 -> IPv6 设置。
将 RA 服务 和 DHCPv6 服务 设置为 服务器模式。
禁用 NDP 代理。
在 IPv6 RA 设置 中,将 默认路由器 改为 强制。

防火墙配置:

打开防火墙设置,进入 NAT 规则,添加一个名为 nat6 的规则:
限制地址类型 选择 仅 IPv6。
协议 设置为 任何。
出站区域 设置为 WAN。
源地址 和 目标地址 都设置为 任意。
操作 选择 MASQUERADE。

服务器性能允许的话建议使用原版joyqi/typecho

docker run -d --name=typecho --restart always --mount type=tmpfs,destination=/tmp -v ~/typecho_data:/data -e PHP_TZ=Asia/Shanghai -e PHP_MAX_EXECUTION_TIME=600 -p 8080:80 80x86/typecho:latest

打开防火墙

ufw allow 8080

IP:8080就能打开网页
首次打开需要配置
数据库选sqlite,最简单,不需要多余配置就能运行。

系统Ubuntu 22.04.5

安装依赖

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
  bzip2 ccache clang cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \
  g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \
  libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses-dev libpython3-dev \
  libreadline-dev libssl-dev libtool libyaml-dev libz-dev lld llvm lrzsz mkisofs msmtp nano \
  ninja-build p7zip p7zip-full patch pkgconf python3 python3-pip python3-ply python3-docutils \
  python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs \
  upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd g++ libncurses5-dev python3-distutils file

sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.org/init_build_environment.sh)'

克隆 23.05.0 版本的源代码

git clone -b v23.05.0 --single-branch https://github.com/immortalwrt/immortalwrt.git
cd immortalwrt

添加软件源

nano feeds.conf.default
src-git turboacc https://github.com/chenmozhijin/turboacc.git

更新代码:

./scripts/feeds update -a
./scripts/feeds install -a

下载这个文件,放到immortalwrt目录

config.zip

curl -O https://www.luoji.cfd/usr/uploads/2026/04/3724601009.zip
unzip 3724601009.zip

make menuconfig

运行后,选择CPU和设备型号,之后立即保存退出。

再次运行make menuconfig
选择需要的插件。

带usb的路由器,插随身wifi需要这些依赖

Kernel modules --->
USB Support --->
勾选

kmod-usb-core
kmod-usb-ledtrig-usbport
kmod-usb-net
kmod-usb-net-cdc-ether
kmod-usb-net-rndis
kmod-usb-serial
kmod-usb-serial-option
kmod-usb-storage
kmod-usb2
kmod-usb3

路由器只有USB2,就不勾选USB3

修改默认ip地址、DNS、主机名称

package/base-files/files/bin/config_generate

编译

make -j5

命令中的-j5,是CPU核数+1
要看详细编译日志,用

make -j1 V=s

docker run -d -p 9993:9993/udp -p 3000:3443 -p 3180:3180 \
    -v /root/zerotier-aio/var:/var/lib/zerotier-one \
    -v /root/zerotier-aio/etc:/www/zerotier-webui/etc \
    -v /root/zerotier-aio/logs:/logs \
    -e NODE_ENV=production \
    -e MYADDR=IP地址 \
    -e ZEROTIER-WEBUI_PASSWD=密码 \
    -e MYDOMAIN=域名 \
    --name zerotier-aio \
    imashen/zerotier-aio
ufw allow 9993
ufw allow 3000

一、安装pve

1、官网下载pve安装包
2、用balenaetcher把镜像写入u盘,用于安装pve
3、安装完成后,把路由器连电脑登录pve后台

二、安装windows

1、在pve管理后台选中pve->local->iso镜像,把windows的iso、virtio-win的驱动iso、爱快的iso上传到pve
2、创建虚拟机,名称随意,勾选“开机自启动”。下一步,ISO镜像选刚才上传的windows镜像。类别选windows。下一步,系统默认。下一步,磁盘,总线选sata、磁盘大小45G。下一步,核心4核,类别host。下一步,内存至少4096。下一步,网络,模型virtlo半虚拟化,防火墙不勾。下一步,确认。
3、先别开机Windows,选择pve节点下面刚才新建的Windows,选硬件->添加->cd/dvd驱动器,存储选刚才的45G,镜像选virtio-win。
4、开机,到选择安装盘的时候,如果看不到硬盘,就点下面的加载驱动,选择选择光驱->vioscsi->w10->adm64,确定之后下一步。然后正常流程安装玩就可以了。
5、
!!!!!重点!!!!!
!!!!!重点!!!!!
!!!!!重点!!!!!
进Windows后,关闭快速启动。否则,pve重启的时候,Windows会启动失败,但手动启动正常。
6、去Windows设备管理器中查看还有那些硬件没驱动的,指定驱动路径到virtio那个光驱里去,就会自动安装。

三、安装爱快

创建虚拟机,基本和Windows一样,内存2g、硬盘2g就行了。

四、安装openwrt

1、创建虚拟机,选择和爱快一样就行。不需要指定硬盘
2、用scp命令或者ssh客户端上传电脑里的openwrt镜像和img2kvm到pve的root目录
3、ssh到pve

chmod a+x img2kvm #可执行权限
./img2kvm openwrt.img 102 vm-102-disk-1
两个102,是虚拟机ID,根据实际情况更改
4、开机之后,和实机安装openwrt一样操作。

https://github.com/xiaoxinpro/WolGoWeb
docker 开启maclvan,让wolgoweb以单独的IP地址运行。
具体方法看这里
https://www.luoji.cfd/archives/20/
之后停止并移除刚才的wolgoweb,重新用下面的命令运行容器

docker run -d --name wol --net=macvlan --restart unless-stopped chishin/wol-go-web
浏览器输入单独的ip:9090就能打开

外网访问:
一、openwrt安装zerotier,开启“自动允许客户端 NAT”,其它设备就能用局域网IP地址访问路由器下所有的设备。
在开启zerotier的电脑、手机、平板上,浏览器输入局域网ip:9090就能直接访问。推荐这种,简单且安全。
二、域名+ddns+公网ip(我只有动态公网ipv6,有公网ipv4同理)。
1、openwrt用ddns将域名解析到路由器上
2、openwrt安装socat,把外网端口转发到wolgoweb的IP地址和端口上(理论上讲openwrt防火墙自带的端口转发就行,但我的一直不成功)。注意,外网端口不能和wolgoweb端口一样,否则端口转发不能启动。这可能是个bug。
3、浏览器输入域名:外网端口就能访问到路由器上的wolgoweb,但在语法规则输入就能唤醒局域网内的电脑。
……………………
可以把这个地址保存为快捷方式放到桌面上,以后要唤醒电脑,双击一下就行了。比远程登录到路由器,在用wol插件唤醒方便得多。

docker network create -d macvlan \
--subnet=192.168.3.0/24 \
--gateway=192.168.3.1 \
-o parent=br-lan \
macvlan

命令行输入

ip link add mymacvlan link br-lan type macvlan mode bridge
ip addr add 192.168.3.254 dev mymacvlan
ip link set mymacvlan up
ip route add 192.168.3.2 dev mymacvlan
这样设置后重启openwrt会失效,编辑
/etc/rc.loacl
文件,把上面这段命令放在exit 0前面。

openwrt管理页面安装samba4,安装完刷新一下页面
选右侧“服务”-“网络共享”
勾选启用macOS兼容共享

打开ssh客户端登录到openwrt

新建一个文件夹用于存放用户目录
mkdir /home
新建一个用于登陆共享的用户名,也可以是几个,供不同的人使用

useradd --create-home --groups users --user-group xxxx
创建密码,要输入两次密码

smbpasswd -a xxxx
创建用于timemachine的目录,一般会在另外挂载的硬盘中。

cd /mnt/sda1
mkdir /mnt/sda1/Backups
chmod 775 Backups
chgrp users Backups
查看group文件中是否有刚才新建的用户名

cat /etc/group
里面有这个就行了

users:x:100:xxxx
……………………………………………………
再打开openwrt管理页面,右侧“服务”-“网络共享”,找到最下面的“共享目录”,点“添加”。
名称:随便起
路径:刚才新建的/mnt/sda1/Backups
可浏览:不勾选(这里是指在网上邻居上会不会自动显示出来,如果timemachine,就不勾。如果设置共享目录,就勾上)
只读:不勾选
强制root:勾选
允许用户:xxxx(刚才新建的用户名)
允许匿名、仅来宾用户:不勾选
继承所有者:勾选
创建权限掩码:0666或者0655都行
目录权限掩码:0777
vfs对象:不填
Apple Time-machine共享:勾选(存储timemachine就勾,只做共享就不勾)
Time-machine大小(GB):预计分配给timemachine的空间大小。

点保存并应用,设置完成。

…………………………………………………………
剩下的就和所有timemachine教程一样的。

同理,可以设置文件共享。macOS、Windows、Linux都能正常访问。

1、在/etc/profile.d文件夹中新建一个可执行权限的脚本,如sysinfo.sh

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export LANG=zh_CN.UTF-8

THIS_SCRIPT="sysinfo"
MOTD_DISABLE=""

SHOW_IP_PATTERN="^[ewr].*|^br.*|^lt.*|^umts.*"

DATA_STORAGE=/userdisk/data
MEDIA_STORAGE=/userdisk/snail


# don't edit below here
function display()
{
    # $1=name $2=value $3=red_limit $4=minimal_show_limit $5=unit $6=after $7=acs/desc{
    # battery red color is opposite, lower number
    if [[ "$1" == "Battery" ]]; then
        local great="<";
    else
        local great=">";
    fi
    if [[ -n "$2" && "$2" > "0" && (( "${2%.*}" -ge "$4" )) ]]; then
        printf "%-14s%s" "$1:"
        if awk "BEGIN{exit ! ($2 $great $3)}"; then
            echo -ne "\e[0;91m $2";
        else
            echo -ne "\e[0;92m $2";
        fi
        printf "%-1s%s\x1B[0m" "$5"
        printf "%-11s%s\t" "$6"
        return 1
    fi
} # display


function get_ip_addresses()
{
    local ips=()
    for f in /sys/class/net/*; do
        local intf=$(basename $f)
        # match only interface names starting with e (Ethernet), br (bridge), w (wireless), r (some Ralink drivers use ra<number> format)
        if [[ $intf =~ $SHOW_IP_PATTERN ]]; then
            local tmp=$(ip -4 addr show dev $intf | awk '/inet/ {print $2}' | cut -d'/' -f1)
            # add both name and IP - can be informative but becomes ugly with long persistent/predictable device names
            #[[ -n $tmp ]] && ips+=("$intf: $tmp")
            # add IP only
            [[ -n $tmp ]] && ips+=("$tmp")
        fi
    done
    echo "${ips[@]}"
} # get_ip_addresses


function storage_info()
{
    # storage info
    RootInfo=$(df -h /)
    root_usage=$(awk '/\// {print $(NF-1)}' <<<${RootInfo} | sed 's/%//g')
    root_total=$(awk '/\// {print $(NF-4)}' <<<${RootInfo})
} # storage_info


# query various systems and send some stuff to the background for overall faster execution.
# Works only with ambienttemp and batteryinfo since A20 is slow enough :)
storage_info
critical_load=$(( 1 + $(grep -c processor /proc/cpuinfo) / 2 ))

# get uptime, logged in users and load in one take
UptimeString=$(uptime | tr -d ',')
time=$(awk -F" " '{print $3" "$4}' <<<"${UptimeString}")
load="$(awk -F"average: " '{print $2}'<<<"${UptimeString}")"
case ${time} in
    1:*) # 1-2 hours
        time=$(awk -F" " '{print $3" 小时"}' <<<"${UptimeString}")
        ;;
    *:*) # 2-24 hours
        time=$(awk -F" " '{print $3" 小时"}' <<<"${UptimeString}")
        ;;
    *day) # days
        days=$(awk -F" " '{print $3"天"}' <<<"${UptimeString}")
        time=$(awk -F" " '{print $5}' <<<"${UptimeString}")
        time="$days "$(awk -F":" '{print $1"小时 "$2"分钟"}' <<<"${time}")
        ;;
esac


# memory and swap
mem_info=$(LC_ALL=C free -w 2>/dev/null | grep "^Mem" || LC_ALL=C free | grep "^Mem")
memory_usage=$(awk '{printf("%.0f",(($2-($4+$6))/$2) * 100)}' <<<${mem_info})
memory_total=$(awk '{printf("%d",$2/1024)}' <<<${mem_info})
swap_info=$(LC_ALL=C free -m | grep "^Swap")
swap_usage=$( (awk '/Swap/ { printf("%3.0f", $3/$2*100) }' <<<${swap_info} 2>/dev/null || echo 0) | tr -c -d '[:digit:]')
swap_total=$(awk '{print $(2)}' <<<${swap_info})

c=0
while [ ! -n "$(get_ip_addresses)" ];do
[ $c -eq 3 ] && break || let c++
sleep 1
done
ip_address="$(get_ip_addresses)"

# display info
display "系统负载" "${load%% *}" "${critical_load}" "0" "" "${load#* }"
printf "运行时间:  \x1B[92m%s\x1B[0m\t\t" "$time"
echo "" # fixed newline


display "内存已用" "$memory_usage" "70" "0" " %" " of ${memory_total}MB"
display "交换内存" "$swap_usage" "10" "0" " %" " of $swap_total""Mb"
printf "IP  地址:  \x1B[92m%s\x1B[0m" "$ip_address"
echo "" # fixed newline

display "系统存储" "$root_usage" "90" "1" "%" " of $root_total"
if [ -x /sbin/cpuinfo ]; then
printf "CPU 信息: \x1B[92m%s\x1B[0m\t" "$(echo `/sbin/cpuinfo | cut -d ' ' -f -4`)"
fi
echo ""
echo ""

2、修改/etc/profile文件里的内容

case "$TERM" in
    xterm*|rxvt*)
                export PS1='\[\e[31;1m\]\u@\[\e[32;1m\]\h:\w\$\[\e[012;00m\]'
                ;;
esac

[ -n "$FAILSAFE" ] || {
    for FILE in /etc/profile.d/*.sh; do
        if [ "$FILE" == "/etc/profile.d/sysinfo.sh" ]; then
         [ "$(which bash)" ] && env -i bash "$FILE"
        else
                 [ -e "$FILE" ] && . "$FILE"
                fi
    done
    unset FILE
}

nano /etc/banner

_______  _______  _______                                      

| || || |
| __|| _|| _ |
| |___ | | | | | |
| ___| | | | |_| |
| |___ | | | |
|_______| |___| |_______|

                   _____     _ _ _     _   
                  |     |   | | | |___| |_ 
                  |  |  |___| | | |  _|  _|
                  |__  _|   |_____|_| |_|  
                     |  |       r5200-5cca3d82e

     Q-wrt_360T7 R23.8.12 by 行星防御理事会

转自:https://u.sb/debian-swap/

本文将指导如何在 Debian 10/11 和 Ubuntu 22.04 下手工添加 Swap 分区。

准备工作

首先,检查你的系统是否已经有 Swap 分区:

free -m
如果没有返回结果或者 free -m 中 Swap 一列数值是 0,则表示你的系统没有 Swap 分区。

创建 SWAP 分区
我们可以使用 fallocate 命令创建一个 1GB 大小的 Swap 分区:
fallocate -l 1G /swapfile

如果这个命令无法使用,请安装 util-linux 包:
apt install util-linux

然后设置这个文件的权限:
chmod 600 /swapfile

然后激活 SWAP 分区
mkswap /swapfile
swapon /swapfile
此时,你可以使用free -m 命令查看 Swap 分区是否已经激活。

设置开机自启

我们需要编辑 /etc/fstab 这个文件,加入下面的内容即可:

echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
大功告成,使用 free -m 命令查看 Swap 分区是否正确:

调整系统内核 Swappiness 值

Swapiness 是 Linux 内核的一个属性,定义了系统使用交换空间的频率,Swapiness 的值在 0 到 100 之间(默认是 60),一个低的值会使内核尽可能地避免交换,而一个高的值会使内核更积极地使用交换空间。
这个值默认是 60,我们可以使用
cat /proc/sys/vm/swappiness
命令查看当前值。

一般我们可以给他改成 10:
echo "vm.swappiness=10" >> /etc/sysctl.conf
然后使用 sysctl -p 命令使其生效。

关闭 Swap

有时候我们需要关闭 Swap 分区,可以使用下面的命令:
停用 Swap 分区:
swapoff -v /swapfile
然后检查 /etc/fstab,删除
/swapfile swap swap defaults 0 0
这一行。

最后删除 /swapfile 这个文件:
rm /swapfile

爱快
开启ipv6 dhcp

DHCPv6模式改成“无状态”
image.png

openwrt
网络-接口-lan
image.png
image.png

网络-接口-添加新接口
名称随意
协议:DHCPv6
设备:eth0(根据你的实际情况选,和LAN选一样的)
image.png

请求指定长度的 IPv6 前缀:64
image.png

防火墙
image.png

复制openwrt中的局域网ipv6地址
image.png
粘贴进爱快DHCP的
首选DNS和备选DNS中(备选DNS可以填阿里云的ipv6DNS)

结束………………………………………………
重启爱快
重启电脑
手机关闭Wi-Fi再打开

测试方法:
浏览器打开
https://www.testipv6.cn

终端(macos、linux)
ping6 www.sohu.com
命令提示符(windows)
ping -6 www.sohu.com
能ping通就成功

hg680kas高安版刷机很棘手,全网都没几包……
踩了很多坑,这里说明一下。
固件是付费下载的😭
下面的链接固件+ttl工具+华为刷机工具
链接: https://pan.baidu.com/s/1GqWcvPQNdCQbTMa2QPGCgA 提取码: zvka
压缩包里有使用教程

………………………………………………………………
注意⚠️注意⚠️注意⚠️
高安版的一定要注意,全网找遍了只找到两个包,一个免费的不好用,一个付费的很完美。
其它的hg680ka、kas等等,只要不是高安版的,全都不能刷。
刷完变砖……刷完变砖……刷完变砖!!!!

创建工作目录

cd /root
mkdir .halo
cd .halo

下载示例配置文件到工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

编辑配置文件

nano application.yaml

改一下里面数据库的username和password

拉取最新的 Halo 镜像

docker pull halohub/halo

创建容器

docker run -it -d --name halo -p 88:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.2

IP地址:88

一不小心点到系统更新,就显示个红点。我的老本子哪还经得起新系统折腾……

禁止macOS更新

sudo nano /etc/hosts

127.0.0.1 swdist.apple.com
127.0.0.1 swscan.apple.com
127.0.0.1 swcdn.apple.com
127.0.0.1 gdmf.apple.com
127.0.0.1 mesu.apple.com
127.0.0.1 xp.apple.com

命令复制进终端

defaults write com.apple.systempreferences AttentionPrefBundleIDs 0
killall Dock

本地配置文件编辑

[common]
bind_port = 5443
连接端口
dashboard_addr = 0.0.0.0
dashboard_port = 6443
web管理页端口
dashboard_user = xxxxx
web用户名
dashboard_pwd = xxxxxxx
web密码
log_level = info
token = CXeBQRAqoSjRpNtu
allow_ports = 1000-9000

指定端口范围,直接屏蔽

docker run \
   --name ipsec-vpn-server \
   --restart=always \
   -e VPN_IPSEC_PSK=共享密钥 \
   -e VPN_USER=用户名 \
   -e VPN_PASSWORD=登录密码 \
   -p 500:500/udp \
   -p 4500:4500/udp \
   -v /lib/modules:/lib/modules:ro \
   -d --privileged \
   hwdsl2/ipsec-vpn-server:debian

加debian,容器用的debian系统,我用得更习惯,可以不加,体积小

macos设置l2tp的方法

系统偏好设置-网络-点+
接口选vpn
类型l2tp/ipsec
名称随便
配置默认
服务器地址点IP地址或服务器域名
账户名称填“-e VPN_USER=”后面的
点鉴定设置
用户鉴定选密码,填“-e VPN_PASSWORD=”后面的
机器鉴定选共享的密钥,填“ -e VPN_IPSEC_PSK=”后面的