2024-11-22 10:54:14
本文将指导如何在 Debian 12 和 Ubuntu 24.04 下安装 Docker 以及 Docker Compose。
PS:本文同时适用于 Debian 11 以及 Ubuntu 20.04, Ubuntu 22.04。
一、什么是 Docker?
Docker 是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。
二、什么是 Docker Compose?
传统模式下运维人员需要运行 docker run 来启动各种容器,一旦容器过多,就无法一次性记住所有的运行参数和命令,这时候我们可以使用 Docker Compose 来解决这个问题。
Docker Compose 是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务,然后使用一个命令就可以创建并启动所有服务。使用 Docker Compose 可以大大简化 Docker 容器的管理和部署,特别是对于具有多个互相依赖的容器的复杂应用。
三、使用官方源安装 Docker
以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。
首先,安装一些必要的软件包:
apt update apt upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
然后加入 Docker 的 GPG 公钥和 apt 源:
# Debian curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list # Ubuntu curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
国内机器可以用清华 TUNA 的国内源:
# Debian curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list # Ubuntu curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
然后更新系统后即可安装 Docker CE 和 Docker Compose 插件:
apt update apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
此时可以使用 docker version 命令检查是否安装成功:
root@debian ~ # docker version Client: Docker Engine - Community Version: 26.1.4 API version: 1.45 Go version: go1.21.11 Git commit: 5650f9b Built: Wed Jun 5 11:29:22 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 26.1.4 API version: 1.45 (minimum version 1.24) Go version: go1.21.11 Git commit: de5c9cf Built: Wed Jun 5 11:29:22 2024 OS/Arch: linux/amd64 Experimental: true containerd: Version: 1.6.33 GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0
如果需要某个特定用户可以用 Docker rootless 模式运行 Docker,那么可以把这个用户也加入 docker 组,比如我们把 www-data 用户加进去:
apt install docker-ce-rootless-extras sudo usermod -aG docker www-data
四、安装 Docker Compose
因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose:
root@debian ~ # docker compose version Docker Compose version v2.27.1
如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose,
我们可以使用 Docker 官方发布的 Github 直接安装最新版本:
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
此时可以使用 docker-compose version 命令检查是否安装成功:
root@debian ~ # docker-compose version Docker Compose version v2.27.1
五、修改 Docker 配置
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训):
cat > /etc/docker/daemon.json << EOF { "log-driver": "json-file", "log-opts": { "max-size": "20m", "max-file": "3" }, "ipv6": true, "fixed-cidr-v6": "fd00:dead:beef:c0::/80", "experimental":true, "ip6tables":true } EOF
然后重启 Docker 服务:
systemctl restart docker
好了,我们已经安装好了 Docker 和 Docker Compose,然后就可以开始愉快的安装各种软件,限于篇幅,我们不再赘述,今后慢慢介绍安装各种 Docker 软件的方法。
来源:烧饼博客
链接:https://u.sb/debian-install-docker/
2024-09-02 16:52:36
这篇文章是透明代理问题的一个延续,旨在解决 IPv4 & IPv6 双栈家庭网络环境中,将所有终端设备网关指向旁路由,实现所有设备均可正常科学上网的问题。在写这篇博客之前,我在 youtube 上翻阅了许多相关视频,发现很多 UP 主对 IPv6 避而不谈,也有 UP 主建议关闭 IPv6 网络。因此决定聊一下这个话题,算是一个探究吧,希望这篇文章对有这方面需求的小伙伴有一些启发。
一、实现目标及解决思路
1、家庭网络中终端设备一般很少,对主路由的数据交换及网络吞吐能力要求并不高,因此在路由器选择方面,尽可能选择性价比及稳定性高、功耗低的产品。
2、在网络拓扑方面,遵循网络拓扑结构越简单越好,这样当出现故障时,我们更容易排查错误。
3、解决 IPv4 & IPv6 双栈家庭局域网环境下,所有终端设备均可通过旁路由科学上网的问题。
4、我不建议将所有功能(例如科学上网插件、分流规则等)都集中在主路由上,一方面需要将主路由替换为性能较好的软路由,另外主路由的配置会变得比较臃肿,牵一发动全身,不利于故障排查。
5、在这篇文章中,主路由我们使用运营商赠送的光猫,然后引入一块 Armbian 操作系统的旁路由实现全局科学上网问题。
二、网络拓扑结构
以上是本实验环境的网络拓扑结构:
1、主路由使用运营商赠送的华为 MA5671 光猫(IPv4地址:192.168.0.1),光猫的 LAN2/LAN4 口被定义为 IPTV 口,专门用于接运营商赠送的 IPTV 机顶盒。
2、光猫采用路由模式,简单配置 IPv4 dhcp 及 IPv6 相关设置后,局域网内的终端设备即获取到有效的 IP 地址,可以正常上网了,这应该是大多数普通家庭最简单的网络结构。
3、斐讯 N1 刷入 Armbian 操作系统(IPv4地址:192.168.0.2),当作旁路由使用,实现全局科学上网问题。旁路由已经被配置为透明代理,可以正常科学上网。具体可参考《在 Armbian 操作系统上使用 dae(大鹅) 搭建透明代理》或《在 Armbian 操作系统上搭建基于 Hysteria2 协议的透明代理》。
三、修改相关设置,使局域网内客户端网关指向旁路由,实现全局科学上网
1、IPv4 DHCP 相关设置
由于光猫的 IPv4 DHCP Server 的设置不能修改网关地址,我们关掉光猫的 IPv4 DHCP Server 。
然后在旁路由上安装 IPv4 DHCP Server,解决 IPv4 网关问题。
# 安装 isc-dhcp-server apt-get install isc-dhcp-server # 修改 isc-dhcp-server 配置文件,定义网络接口 vi /etc/default/isc-dhcp-server INTERFACESv4="eth0" INTERFACESv6="eth0" # 在 dhcpd.conf 配置文件尾部添加如下配置 vi /etc/dhcp/dhcpd.conf subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.150 192.168.0.200; # 开放的地址池 option domain-name-servers 223.5.5.5,223.6.6.6; # NS域名服务器,如果没有就注释掉 #option domain-name "internal.example.org"; # 域名 option routers 192.168.0.2; # 网关地址 option broadcast-address 192.168.0.255; # 广播地址 default-lease-time 259200; # 默认租期,单位:秒 max-lease-time 259200; # 最大租期 } # 重启 isc-dhcp-server systemctl restart isc-dhcp-server
这时,重启终端设备后,终端设备的 ipv4 网关便指向了旁路由(192.168.0.2)。
2、IPv6 相关设置
光猫的 IPv6 设置如下图,从 WAN 口获取 IPv6 前缀,采用无状态模式给局域网分配 IPv6 地址。 华为 MA5671 这款光猫是比较傻瓜的,没有 Router Advertisement (RA) 服务的相关设置。
正常情况下,如果设备中的 Router Advertisement (RA) 服务参数无法修改,设备生产商会将 AdvDefaultPreference 和 AdvRoutePreference 参数的优先级设置为 medium 。
我们可以在旁路由中使用如下命令查询华为 MA5671 光猫 RA 服务中 AdvDefaultPreference 和 AdvRoutePreference 参数的优先级。
root@armbian:~# ip -6 route show ::1 dev lo proto kernel metric 256 pref medium 240e:380:19b3:65f7::/64 dev eth0 proto kernel metric 256 expires 259193sec pref medium fe80::ecee:eeff:feee:eeee dev dae0 proto kernel metric 256 pref medium fe80::/64 dev eth0 proto kernel metric 256 pref medium fe80::/64 dev dae0 proto kernel metric 256 pref medium default via fe80::1 dev eth0 proto ra metric 1024 expires 1793sec mtu 1472 hoplimit 64 pref medium
相关知识点:
一个局域网内允许同时存在多个 Router Advertisement (RA) 服务。 AdvDefaultPreference:用于设置整个路由器作为默认网关的优先级。 AdvRoutePreference:用于设置特定路由的优先级。 优先级可以是 low、medium 或 high。medium 是默认值,如果设置为 high 意味着这个路由器比其他默认优先级较低的路由器更有可能被选为默认网关。 |
鉴于此,我们可以使用光猫的 Router Advertisement (RA) 服务为局域网设备分配 IPv6 地址,同时在旁路由上安装 Router Advertisement (RA) 服务,将 IPv6 的网关指向旁路由。
# 安装 radvd apt-get install radvd # 创建 radvd 配置文件,AdvDefaultPreference 和 AdvRoutePreference 设置为 high cat > /etc/radvd.conf <<EOF interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 75; MaxRtrAdvInterval 100; AdvDefaultPreference high; AdvManagedFlag off; AdvOtherConfigFlag off; route ::/0 { AdvRoutePreference high; AdvRouteLifetime 300; }; }; EOF # 修改配置文件属性 chmod 755 /etc/radvd.conf # 设置开机启动并启动 radvd 服务 systemctl enable radvd systemctl start radvd
四、验证终端设备的路由情况
1、在Windows 客户端上,使用 tracert 命令追踪路由情况
C:\>tracert 114.114.114.114 通过最多 30 个跃点跟踪 到 public1.114dns.com [114.114.114.114] 的路由: 1 2 ms 1 ms 2 ms 192.168.0.2 2 3 ms 2 ms 1 ms 192.168.0.1 3 ......
使用 tracert 命令追踪 IPv4 的路由情况,第一跳为旁路由(192.168.0.2),第二跳为光猫(192.168.0.1)。
C:\>tracert 240C::6644 通过最多 30 个跃点跟踪到 240c::6644 的路由 1 2 ms 1 ms 2 ms 240e:380:19b3:65f7:8149:d672:24d4:7a9f 2 2 ms 2 ms 2 ms 240e:380:19b3:9800:1510:9453:628b:90b0 3 ......
使用 tracert 命令追踪 IPv6 的路由情况,第一跳为旁路由(240e:380:19b3:65f7:8149:d672:24d4:7a9f),第二跳为光猫(240e:380:19b3:9800:1510:9453:628b:90b0)。
2、在 Linux / Armbian 客户端上查看路由情况
root@onecloud:~# ip route show default via 192.168.0.2 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.159
从以上结果可以看出,IPv4 默认的网关为旁路由(192.168.0.2)。
root@onecloud:~# ip -6 route show ::1 dev lo proto kernel metric 256 pref medium 240e:380:19b3:65f7::/64 dev eth0 proto kernel metric 256 expires 259163sec pref medium fe80::/64 dev eth0 proto kernel metric 256 pref medium default via fe80::8149:d672:24d4:7a9f dev eth0 proto ra metric 1024 expires 263sec hoplimit 64 pref high default via fe80::1 dev eth0 proto ra metric 1024 expires 1763sec mtu 1472 hoplimit 64 pref medium
从以上结果可以看出,IPv6 有两个默认路由,分别为光猫(fe80::1)和旁路由(fe80::8149:d672:24d4:7a9f),由于旁路由 RA 服务的 AdvDefaultPreference 设置为 high ,操作系统会优先使用旁路由。
3、使用 ADB 工具连接 Android 盒子,在盒子上使用 traceroute 命令追踪路由情况
franklin:/ # traceroute 114.114.114.114 traceroute to 114.114.114.114 (114.114.114.114), 30 hops max, 38 byte packets 1 192.168.0.2 (192.168.0.2) 1.274 ms 1.422 ms 1.039 ms 2 192.168.0.1 (192.168.0.1) 1.705 ms 1.707 ms 1.367 ms 3 ......
使用 traceroute 命令追踪 IPv4 的路由情况,第一跳为旁路由(192.168.0.2),第二跳为光猫(192.168.0.1)。
franklin:/ # traceroute 240C::6644 traceroute to 240C::6644 (240c::6644), 30 hops max, 64 byte packets 1 240e:380:19b3:65f7:8149:d672:24d4:7a9f (240e:380:19b3:65f7:8149:d672:24d4:7a9f) 1.426 ms 1.200 ms 1.116 ms 2 240e:380:19b3:9800:1510:9453:628b:90b0 (240e:380:19b3:9800:1510:9453:628b:90b0) 1.659 ms 1.544 ms 1.267 ms 3 ......
使用 traceroute 命令追踪 IPv6 的路由情况,第一跳为旁路由(240e:380:19b3:65f7:8149:d672:24d4:7a9f),第二跳为光猫(240e:380:19b3:9800:1510:9453:628b:90b0)。
五、该方案的局限性
该方案在 WIndows 、Linux 、macOS 等操作系统中可以完美使用,但是对于低版本的 Android 系统可能达不到预期效果。究其原因为 Android 的某些低版本对 IPv6 的支持有限,尤其是在处理路由广告(RA)消息时,可能并没有完整实现对所有 RA 选项的支持。这意味着即使广告了 AdvDefaultPreference high 或 AdvRoutePreference high,Android 设备可能不会显示或使用这些信息。实验过程中我发现其他操作系统均可以将 IPv6 网关指向旁路由,但是 Android 机顶盒始终存在问题,直到我将 Android 机顶盒的固件版本升级到 Android 9,才解决了上述问题。
相关知识点:Android 对 IPv6 支持的演变
1、早期版本(Android 4.x 及更早版本): 这些版本对 IPv6 支持非常有限,主要用于基础的 IPv6 连接,路由广告(RA)消息的处理也比较简单。 例如:Android 4.4 之前的版本可能不会完全支持 RA 消息中的所有选项,比如 AdvRoutePreference。 2、Android 5.x (Lollipop): 增加了对 IPv6 的支持,包括 RA 的处理,但仍然有限。 具体支持的 RA 选项文档很少,但从用户反馈来看,RA 消息中的一些高级选项可能不会完全处理或显示。 3、Android 6.x (Marshmallow) 及以后: 增强了对 IPv6 的支持,包括对更多 RA 选项的处理。 例如:引入了对 IPv6 快速切换和更好的 RA 消息处理,但具体到 AdvRoutePreference 等选项的支持情况仍然不明确。 4、Android 8.x (Oreo) 及以后: 进一步增强了 IPv6 支持,改进了 RA 消息的处理。 例如:引入了对 IPv6 Dual-Stack 的更好支持,但具体到高级 RA 选项,如 AdvRoutePreference,仍然可能存在支持不完整或不显示的问题。 |
本文出处:HiFeng's Blog
本文链接:https://www.hicairo.com/post/78.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!
2024-07-27 08:54:00
今年年初,我在 Armbian 操作系统上使用 iptables 、ipset、dnsmasq + gfwlist 搭建了基于 hysteria 协议的透明代理,实现了旁路由的分流功能。其中使用了国内的 IPv4&IPv6 地址集合和被污染的域名列表,大量的命令及 iptables 数据包流向问题让很多小伙伴看起来有些有些晦涩难懂。很开心由 mzz2017 大佬开发的 dae(大鹅) 透明代理工具完美的解决了上述问题,我已经在斐讯 N1 和玩客云上测试了 dae(大鹅),目前运行稳定。这篇文章将带领大家进行 dae(大鹅)的安装和基本配置。
一、dae(大鹅)简介
dae 是一款基于 eBPF 技术的 Linux 高性能透明代理工具。而 eBPF 是一个内核技术,允许在 Linux 内核中运行程序来监控网络数据包和系统事件,但不需要修改内核代码或者重新编译内核。简而言之,它可以提供内核级别执行自定义代码的能力,可以实现各种网络和性能优化的需求。它有点类似于脚本语言,只不过它是针对内核开发者的。
项目地址:https://github.com/daeuniverse/dae
二、安装环境
1、Linux 内核版本需要>= 5.8,可以使用如下命令查询:
root@onecloud:~# uname -r 6.6.29-current-meson
2、dae 需要以下内核选项,可以使用如下命令查询:
root@onecloud:~# (zcat /proc/config.gz || cat /boot/{config,config-$(uname -r)}) | grep -E 'CONFIG_(DEBUG_INFO|DEBUG_INFO_BTF|KPROBES|KPROBE_EVENTS|BPF|BPF_SYSCALL|BPF_JIT|BPF_STREAM_PARSER|NET_CLS_ACT|NET_SCH_INGRESS|NET_INGRESS|NET_EGRESS|NET_CLS_BPF|BPF_EVENTS|CGROUPS)=|# CONFIG_DEBUG_INFO_REDUCED is not set' CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_CGROUPS=y CONFIG_KPROBES=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y CONFIG_NET_SCH_INGRESS=m CONFIG_NET_CLS_BPF=m CONFIG_NET_CLS_ACT=y CONFIG_BPF_STREAM_PARSER=y CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_INFO_REDUCED is not set CONFIG_DEBUG_INFO_BTF=y CONFIG_KPROBE_EVENTS=y CONFIG_BPF_EVENTS=y
三、启用 IP 转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.disable_ipv6 = 0" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 0" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 0" >> /etc/sysctl.conf echo "net.ipv6.conf.default.use_tempaddr = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.forwarding = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.accept_ra = 2" >> /etc/sysctl.conf echo "net.ipv6.conf.default.accept_ra = 2" >> /etc/sysctl.conf echo "net.ipv6.conf.eth0.accept_ra = 2" >> /etc/sysctl.conf sysctl -p
本站提供的玩客云固件,BPF(Berkeley Packet Filter)JIT(Just-In-Time)编译器默认没有开启。可以使用如下命令查询开启状态。如果返回值为1,说明已经开启。
root@onecloud:~# cat /proc/sys/net/core/bpf_jit_enable 1
如果返回值为0,请手动开启。
root@onecloud:~# cat /proc/sys/net/core/bpf_jit_enable 0
开启BPF(Berkeley Packet Filter)JIT(Just-In-Time)编译器。
echo "net.core.bpf_jit_enable = 1" >> /etc/sysctl.conf sysctl -p
四、下载并解压
请下载你设备对应 CPU 架构的安装包,(备注:本站提供的玩客云 dae 固件, v0.5.1正式版可以正常使用,其他较新版本尚未进行测试。)官方地址如下:
https://github.com/daeuniverse/dae/releases
# 下载 v0.5.1 正式版 wget https://mirror.ghproxy.com/https://github.com/daeuniverse/dae/releases/download/v0.5.1/dae-linux-armv7.zip # 解压 unzip -d dae dae-linux-armv7.zip cd dae
五、配置安装
1、配置文件
# 创建配置目录 mkdir -p /etc/dae # 将示例配置文件移动到配置目录 mv example.dae /etc/dae # 创建最小配置文件 cat > /etc/dae/config.dae <<EOF global{} routing{} EOF # 设置配置文件权限,限制只有配置文件所有者才可以读写,不设置dae无法启动 chmod 0640 /etc/dae/config.dae
2.Geo 数据库文件
# 创建数据目录 mkdir -p /usr/local/share/dae/ # 将geo数据库文件移动到数据目录 mv geoip.dat geosite.dat /usr/local/share/dae/
3.主程序文件
# 添加可执行权限 chmod a+x dae-linux-armv7 # 将主程序文件安装到/usr/bin/目录 mv dae-linux-armv7 /usr/bin/dae
4.服务文件
# 将服务文件下载到systemd目录 wget -O /etc/systemd/system/dae.service https://mirror.ghproxy.com/https://raw.githubusercontent.com/daeuniverse/dae/main/install/dae.service # 刷新配置 systemctl daemon-reload
六、服务管理
1、设置开机自启动
systemctl enable dae
2、启动服务
systemctl start dae
3、查询服务状态
systemctl status dae
4、重载配置
systemctl reload dae
七、config.dae 配置文件示例
上一步我们创建了一个最简单的配置文件(/etc/dae/config.dae),用于测试 dae(大鹅)能否正常运行。下面是一个 config.dae 配置文件示例,供参考。
更详细的配置信息,请参考https://github.com/daeuniverse/dae/blob/main/example.dae
如果你只在 wan_interface 中填写了接口或 auto,而未在 lan_interface 中填写内容,那么从局域网中传来的流量将无法被代理。如果你想同时代理本机和局域网流量,请同时填写 wan_interface 和 lan_interface。
下面的配置,需要注意两个地方:
1,lan_interface: eth0(注意看你的网口名称是不是eth0)
2,节点URI,请修改为你自己的节点URI
# 全局配置 global { # 绑定lan网口提供给内网设备,填自己服务器的网口,多个逗号隔开 lan_interface: eth0 wan_interface: auto log_level: info auto_config_kernel_parameter: true dial_mode: domain allow_insecure: false so_mark_from_dae: 1234 # tls配置 tls_implementation: utls utls_imitate: chrome_auto } # 订阅配置 subscription { } # 节点配置 node { # 节点URI #US: 'juicity://uuid:[email protected]:port?congestion_control=bbr&sni=example.domain.com&allow_insecure=0&pinned_certchain_sha256=CERT_HASH' HK: 'socks5://username:password@localhost:10808' #US: 'hysteria2://authpassword@serverIP:port/?sin=domainname' } # 分组配置,以下采用固定策略,使用第一个节点 group { ifeng_proxy { policy: fixed(0) } } # dns配置 dns { upstream { googledns: 'tcp+udp://dns.google.com:53' alidns: 'udp://dns.alidns.com:53' } routing { request { qname(geosite:cn) -> alidns fallback: googledns } response { upstream(googledns) -> accept fallback: accept } } } # 路由配置 routing { pname(NetworkManager) -> direct dip(224.0.0.0/3, 'ff00::/8') -> direct dip(geoip:private) -> direct ### 以下是自定义规则 ## 规则 ip(geoip:cn) -> direct domain(geosite:cn) -> direct domain(geosite:category-ads) -> block # hysteria 配置,将进程名为 hysteria 的流量直接放行,不进行劫持和处理,强制直连。 pname(hysteria) -> must_direct # 默认出站分组 fallback: ifeng_proxy }
八、dae(大鹅) 使用 hysteria 协议
dae(大鹅)从 v.0.7.0 版本开始支持 hysteria2 协议,这样旁路由上就可以少运行一个 hysteria 进程,减少旁路由的压力。经过测试,目前 v0.7.0 版本在使用 hysteria2 时,不支持混淆和端口跳跃功能,URL 中的主机名为域名时,无法正常解析。
dae v0.7.0 版本目前可用的 URL 格式为:
hysteria2://authpassword@serverIP:port/?sin=domainname
鉴于有些小伙伴想要用到混淆和端口跳跃功能,目前情况就只能多跑一个 hysteria 进程。
1、创建工作组和用户
#建议尽量不要使用 root 用户运行服务,我们创建一个名为 hysteria 的用户用于运行 hysteria 。 groupadd --system hysteria useradd --system \ --gid hysteria \ --create-home \ --home-dir /var/lib/hysteria \ --shell /usr/sbin/nologin \ --comment "hysteria server" \ hysteria
2、下载你设备对应 CPU 架构的安装包。
https://github.com/apernet/hysteria/releases/latest
# 下载对应 CPU 架构的安装包 wget -q -O /usr/bin/hysteria https://mirror.ghproxy.com/https://github.com/apernet/hysteria/releases/download/app%2Fv2.5.0/hysteria-linux-arm # 设置可执行权限 chmod a+x /usr/bin/hysteria #创建 hysteria 配置文件目录 mkdir /etc/hysteria
3、请参考以下示例,结合 hysteria 服务端配置,创建 hysteria 客户端配置文件,配置文件的路径为 /etc/hysteria/config.json 。
{ "server": "hy2.hicairo.com:10086:30000-35000", "obfs": { "type": "salamander", "salamander": { "password": "*******************" } }, "auth":"*******************", "transport": { "type": "udp", "udp": { "hopInterval": "30s" } }, "bandwidth": { "up": "35 mbps", "down": "225 mbps" }, "fastOpen": true, "lazy": true, "socks5": { "listen": ":10808", "username": "username", "password": "password" }, "http": { "listen": ":10809", "username": "username", "password": "password" } }
4、将 Hysteria 作为守护进程运行
在 /etc/systemd/system/ 目录创建 hysteria.service
cat > /etc/systemd/system/hysteria.service <<EOF [Unit] Description=Hysteria client Service (config.json) After=network.target [Service] Type=simple ExecStart=/usr/bin/hysteria -c /etc/hysteria/config.json client WorkingDirectory=/etc/hysteria User=hysteria Group=hysteria Environment=HYSTERIA_LOG_LEVEL=info CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW NoNewPrivileges=true [Install] WantedBy=multi-user.target EOF
5、启动 Hysteria 客户端
chown -R hysteria:hysteria /etc/hysteria/ systemctl daemon-reload systemctl enable hysteria systemctl start hysteria #查看当前状态 systemctl status hysteria #使用更改的配置文件重新加载 hysteria systemctl reload hysteria
6、这时 Hysteria 进程就运行起来了,提供了 socks5 和 http 协议。参考本文第七章节,修改 /etc/dae/config.dae 配置文件中的节点配置,连接本地的 socks5 协议。
...... # 节点配置 node { # 节点URI HK: 'socks5://username:password@localhost:10808' } ......
同时,请确认你的 /etc/dae/config.dae 配置文件中包含以下这句配置。
# hysteria 配置,将进程名为 hysteria 的流量直接放行,不进行劫持和处理,强制直连。 pname(hysteria) -> must_direct
最后,重启 dae(大鹅)服务即可。
systemctl restart dae
本文出处:HiFeng'Blog
本文链接:https://www.hicairo.com/post/77.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!
2024-07-16 18:53:15
玩客云是 2017 年的一款矿渣产品,目前在海鲜市场一块也就 20-30 元左右,鉴于玩客云提供了一个千兆以太网口,想着玩客云能否当作旁路由使用,于是就有了这篇文档。经测试玩客云性能较低,如果用做科学上网的旁路由,会因为硬件性能原因产生降速问题,不推荐再次入手,如果想玩 Armbian 可以考虑入手斐讯 N1,目前我使用斐讯 N1 搭建基于 Armbian 系统的旁路由运行稳定,速度也可以跑满我的宽带。
一、玩客云硬件参数
CPU为晶晨 S805 ,32位,ARM 4核 1.5GHz
1G(DDR3) + 8G(eMMC)
两个USB 2.0,HDMI接口,一个千兆网口(RJ45)
二、刷机所需的硬件及软件
1、Windows 操作系统电脑一台。经过我的测试,推荐 Win7/10操作系统。
2、USB 双公头线一根。
3、螺丝刀,卡针,一把金属镊子,用来短接用(用金属线也是可以的)。
4、闲置 U 盘一个,或者读卡器配合存储卡也行。
5、一个一字螺丝刀,或者镊子,如果都没有,一截细铁丝也行,或者其他较细且能导电的东西。
6、使用到的固件和相关软件:
https://drive.google.com/drive/folders/1V19083DONzVld3wTPZTHXL4E3uDf6lcw
1. win32diskimager-1.0.0-install.exe # 写盘工具 2. USB_Burning_Tools_v2.0.7.2_build2.exe # 晶晨线刷工具含驱动 3. eMMC.burn.img # U盘引导底包镜像 4. Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img.gz # Armbian_24.5.0 版本固件, kernel BPF 模块已打开,可使用 dae 5. onecloud-emmc-install-main.zip # USB to EMMC 写盘工具
谷歌云盘里提供的 Armbian 固件是我使用 hzyitc 大佬的仓库编译的,kernel BPF 模块已打开, 可使用 dae ,U 盘引导底包镜像来自 hzyitc 的项目,USB to EMMC写盘工具来自 raysworld 大佬的项目,在此向两位大佬致敬!
三、刷机准备
1、请将用到的固件及软件提前下载到本地,并安装好 1. win32diskimager-1.0.0-install.exe 和 2. USB_Burning_Tools_v2.0.7.2_build2.exe 。
2、将 4. Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img.gz 解压,插入 U 盘后运行 Win32DiskImager 软件, 选择 Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img 写入 U 盘备用。
四、免拆刷机
建议优先尝试此方法,如果此方法可以刷机,可以跳过步骤五。
1、在电脑上运行 USB_Burning_Tools 软件,点击 文件 -> 导入烧录包 ,选择 3. eMMC.burn.img 后点击“开始”按钮。(需要勾选擦除 flash(普通擦除)以及擦除 bootloader )
2、玩客云盒子暂时不要通电,使用USB 双公头线一端接电脑,另外一端接盒子的 USB1 口(靠近 HDMI 的 USB 口)。然后使用卡针顶住重置键(RJ45口旁边的小孔),再接通电源,等待几秒,如果 USB_Burning_Tools 出现“连接成功”,开始将 U 盘引导底包镜像写入玩客云盒子,说明该盒子支持免拆刷机,请等待刷机完成。
3、出现“100%:烧录成功”时,点击“停止”按钮、关闭软件后移除电源和 USB 双公头线,这时已经将 U 盘引导底包成功刷入盒子。
如果 USB_Burning_Tools 没有出现“连接成功”,说明此方法无效,只能选择拆机刷机的方式,详细请参照步骤五。
五、拆机刷机
1、撬开玩客云背面的 PVC 贴片,就是有网口的那一面,这个是直接粘上去的,从接口那里撬开就可以(接口处粘的不牢,比较容易翘起来),如果不好撬开可以用吹风机加热下,不要强行撬 PVC 贴片,会断的。
2、撬开后拧下螺丝,背板就可以取下了,然后就可以抽出整个主板。
3、我们通常能见到的玩客云版本分为 V1.1 和 V1.3,在主板 SD卡槽位置,如果标明了 V1.3 就是 V1.3 版本,否则应该是 V1.1 版本。
4、刷机时,不同版本的主板短接位置不同, V1.1 主板(短接背面两个焊点空焊位)。
5、V1.3 主板(短接从上往下数第四第五电阻引脚)。
6、短接刷机和免拆机刷一样,首先在电脑上运行 USB_Burning_Tools 软件,点击 文件 -> 导入烧录包 ,选择 3. eMMC.burn.img 后点击“开始”按钮(需要勾选擦除 flash(普通擦除)以及擦除 bootloader )。玩客云盒子暂时不要通电,使用USB 双公头线一端接电脑,另外一端接盒子的 USB1 口(靠近 HDMI 的 USB 口)。然后使用镊子短接上述短接点,再接通电源,等待几秒,USB_Burning_Tools 会出现“连接成功”,并开始将 U 盘引导底包镜像写入玩客云盒子,这时只需等待刷机完成即可。
六、使用 U 盘引导进入 Armbian 系统
1、将 3.2 步骤中准备的 U 盘插入玩客云的 USB1 口(靠近 HDMI 的 USB 口),插入网线,接电源后启动,屏幕会先出现 U-boot 引导画面,之后会进入 U 盘中的 armbian 系统。
2、进入 armbian 以后用 root:1234 登录,会要求修改密码和创建普通用户,不想创建用户可以 Ctrl+C 跳过,完成以后会留在一个 shell 里面。
七、将 U 盘中的 Armbian 系统写入玩客云盒子的 EMMC
现在的 Armbian 系统是从 U 盘启动的,拔掉 U 盘就无法启动了,接下来还需把系统写入到 EMMC 中。
apt install unzip wget https://mirror.ghproxy.com/https://github.com/raysworld/onecloud-emmc-install/archive/refs/heads/main.zip unzip main.zip mv onecloud-emmc-install-main /boot/install cd /boot/install ./install.sh
刷入系统时玩客云的指示灯会蓝/ 紫交替闪烁,表示正在写入 EMMC。
出现如上界面后,表示已经写入完成,这时拔掉电源后移除 U 盘,再次加电后就可以使用 EMMC 中的固件引导引入 Armbian 系统。
八、Armbian 的简单设置
1、将 armbian 的更新源修改为清华源
Armbian 操作系统默认使用的官方更新源(ports.ubuntu.com)服务器在海外,连接速度和国内镜像源比起来较慢,建议修改为清华大学提供的镜像源。
mv /etc/apt/sources.list /etc/apt/sources.list.bak cat > /etc/apt/sources.list <<EOF deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse EOF mv /etc/apt/sources.list.d/armbian.list /etc/apt/sources.list.d/armbian.list.bak cat > /etc/apt/sources.list.d/armbian.list <<EOF deb [signed-by=/usr/share/keyrings/armbian.gpg] https://mirrors.tuna.tsinghua.edu.cn/armbian jammy main jammy-utils jammy-desktop EOF
刷新软件源列表,更新本地软件包索引。
apt update
2、修改时区
# 系统时间和时区 date -R # 修改时区,使用 tzselect 命令,然后选择 asia china beijing yes。 tzselect cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 再次查询系统时间和时区 date -R
3、为玩客云分配静态 IP 地址
参考以下示例,为玩客云分配同网段的静态 IP 地址,hwaddress 参数用于固定 Mac 地址,Mac 地址可以在盒子背后的标签上找到,或者使用 ifconfig 命令查询。修改完成后使用 reboot 命令重启盒子,然后使用新的 IP 地址连接盒子。
# 安装 net-tools vim ifupdown apt install net-tools vim ifupdown # 备份原始配置,分配静态 IP mv /etc/network/interfaces /etc/network/interfaces.bak cat > /etc/network/interfaces <<EOF source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static hwaddress 88:88:88:88:88:88 address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.1 iface eth0 inet6 auto EOF # 关闭 NetworkManager 服务 systemctl stop NetworkManager systemctl disable NetworkManager # 启动 networking 服务 systemctl start networking # 重新启动盒子 reboot
本文出处:HiFeng'Blog
本文链接:https://www.hicairo.com/post/76.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!
2024-05-03 20:11:27
PHICOMM N1 盒子已经上市很多年了,虽然是一个矿渣产品,但是其优异的硬件配置,丰富的固件适配,目前还被广泛使用。在此首先对 webpad 等几位大佬致敬,由于他们的分享,使得很多人可以很方便的在 N1 盒子上实现自己所需的功能。目前网上有关 N1 盒子刷 TV 系统、OpenWrt 系统、Armbian等系统的文章很多,本来不想水这篇文章的,但是鉴于接下来我会分享使用 N1 盒子吃鹅 的话题,考虑到教程的完整性,于是决定还是把 N1 盒子刷 Armbian 系统的步骤整理一下。
一、斐讯 N1 的硬件参数
产品类型:家庭网络存储,云存储
处理器:Amlogic S905D Cortex-A53,Mali-450 GPU
内存:RAM 2GB, ROM 8GB
接口:USB 2.0 * 2、HDMI * 1、RJ45 * 1(千兆网口)
无线连接:支持2.4G/5G WiFi,蓝牙BT 4.1 BLE低功耗
视频输出分辨率:最高支持到 4K 60 帧硬件解码
电源接口:12V/2A
尺寸与重量:产品尺寸为110mm x 110mm x 40mm,产品重量约为0.248kg
二、刷机准备
1、所需硬件
N1 盒子一个、8G 以上 U 盘一个、USB 接口键盘一个、USB 鼠标一块、HDMI 晶晨短接神器(作用为线刷时短接,很便宜,海鲜市场有卖,如果没有可以拆机手动短接)、HDMI 接口显示器 / HDMI 接口电视一台、网线一根、HDMI 线一根、路由器、电脑。
2、所需软件
为方便使用,我已经将所需要的软件整理好,放到了谷歌云盘,大家可以下载后使用。
https://drive.google.com/drive/u/1/folders/1QUhpnzm1CvFHkUh1904EN7QFaJBag8Vb
1. 解压使用-斐讯T1、N1官方系统降级工具.zip #斐讯 T1、N1 官方系统降级工具 2. 解压使用-N1U盘启动.zip #N1 U 盘启动 3. USB_Burning_Tools_v2.0.7.2_build2.exe #晶晨线刷工具含驱动 4. win32diskimager-1.0.0-install.exe #写盘工具 5. N1_mod_by_webpad_v2.2_20180920.img.7z #Android 7.0.1 版本固件, root, 可引导进入 Armbian 6. Reboot to LibreELEC_1.1_Apkpure.apk #重启进入 Armbian 软件 7.Armbian_24.5.0_amlogic_s905d_jammy_6.6.28_server_2024.04.25.img.gz #Armbian_24.5.0 版本固件,kernel BPF 模块已打开,可使用 dae
谷歌云盘里提供的 Armbian 固件 kernel BPF 模块默认已打开, 经我测试可使用 dae ,来自于 ophub 的 GitHub 项目,如果你更习惯于使用 Debian 固件,请使用如下链接自行下载。
https://github.com/ophub/amlogic-s9xxx-armbian/releases/
Armbian 是基于 Debian 和 Ubuntu 的 Linux 发行版,专门为 ARM 开发板设计。Armbian 的版本命名通常遵循其基于的 Debian 或 Ubuntu 发行版。Armbian 的这四个版本(Noble、Jammy、Bullseye 和 Bookworm)分别基于不同的 Debian 或 Ubuntu 版本:
Armbian Noble - 这是基于 Ubuntu 22.04 LTS (代号 "Jammy Jellyfish") 的版本。Ubuntu 22.04 是一个长期支持版本,提供了五年的安全更新和支持。Armbian 对这个版本进行了针对 ARM 设备的优化和定制。
Armbian Jammy - 也是基于 Ubuntu 22.04 LTS 的版本。这个版本名可能与 Noble 重复或是对同一基础版本的另一种命名方式。
Armbian Bullseye - 这是基于 Debian 11 (代号 "Bullseye") 的版本。Debian 11 提供了多种软件的最新稳定版,并享有 Debian 社区的广泛支持和安全维护。Debian 版本的 Armbian 通常更倾向于稳定性和兼容性。
Armbian Bookworm - 基于 Debian 12 (代号 "Bookworm")。这是 Debian 的测试版本,在正式成为稳定版前,它会包含最新的软件更新。使用这个版本的 Armbian 可能提供一些最前沿的特性,但也可能不如稳定版那么稳定。
三、降级关键分区
玩 N1 的朋友都知道第一步要对 N1 进行降级,但是却很少有人说明为什么要进行降级,降级针对盒子做了什么事情,这里我参考“if年少有为”在自己博文中的描述,希望大家能明白其中原理。
连接 HDMI、网线、电源后会进入斐讯自带的安卓系统,安卓系统的标准启动过程如下:
bootloader:斐讯针对该盒子硬件实现的类似 BIOS 的东西,它负责硬件的初始化,最终引导操作系统。
boot 分区:放着安卓操作系统的内核文件,由 bootloader 唤起,也就实现了进入操作系统的效果。
recovery 分区:类似于 WinPE 的东西,如果 boot 分区挂了,则可以通过 Recovery 方式进入一个临时的操作系统,然后恢复 boot 分区(类似于 ghost 做系统)。
问题就在于,bootloader 是斐讯针对盒子定制的,它设置了一些限制,比如:
只能使用他家的安卓系统
不支持U盘引导操作系统
所以呢,恩山论坛的 webpad 大佬,修改了斐讯的 bootloader,我们要做的就是把 webpad 大佬修改后的 bootloader 覆盖到盒子里面去,这个过程被称之为 N1 降级,一台 N1 这辈子只需要做一次降级操作,后续不需要再研究这个问题了。当然如果你的盒子到手时就已经被刷成了 TV 等其他系统,这一步骤就可以跳过了。
1、将 N1 接上网线,HDMI 线接显示器,离 HDMI 口远的那个 USB 口接一个鼠标。连上网以后,等个五分钟左右,待其自动升级到最新版,中间可能会多次重启升级,直到不再升级为准。否则如果正在刷的过程中 N1 重启可能会有点麻烦。记录一下屏幕上显示的 IP ,下一步会用到。接下来用鼠标点击屏幕上版本号的地方 4 次,屏幕中间会显示一下“开启adb”。
2、下载“1.解压使用-斐讯T1、N1官方系统降级工具.zip”文件并解压,运行 onekey 目录中的 run.bat 批处理文件,按照提示输入 2 选择 N1 降级。
按照提示输入 N1 的 IP 地址。
按照提示按任意键开始降级。
四、制作 Armbian U 盘
1、在电脑上下载并安装“4.win32diskimager-1.0.0-install.exe”写盘工具软件,同时下载并解压镜像文件“7.Armbian_24.5.0_amlogic_s905d_jammy_6.6.28_server_2024.04.25.img.gz”备用。
2、运行 win32diskimager 软件,如下图所示,选择上一步解压好的镜像文件,插入 U 盘后将镜像文件写入 U 盘。
有关网上流传的 armbian 5.77 版本的最稳定,meson-gxl-s905d-phicomm-n1-xiangsm.dtb 可以解决系统过高等问题,经过我的实际测试,目前 ophub 编译的镜像已经解决了上述问题,大家可以放心使用。
五、在 Android 系统里引导从 U 盘启动
1、下载“2.解压使用-N1U盘启动.zip”并解压,将显示器和键盘接入 N1 盒子,执行“N1-ADBU盘启动(傻瓜包)”文件夹下的“U盘启动.bat”,输入 N1 盒子的 IP 地址,地址可以从路由器管理界面看到。
2、N1 的两个 USB 口,离 HDMI口 远的接 USB 键盘,另一个接 U 盘。HDMI 线接显示器,加电冷启动。屏幕会先出现启动画面,之后会进入 U 盘的 armbian 系统。这里如果多次重复,还是只能进入 Android 的 recovery 模式,那么请换个 U 盘试试,基本这里不成功都是因为 U 盘兼容性问题导致的,建议最好使用 USB 2.0 的 U 盘。
3、进入 armbian 以后用 root:1234 登录,会被要求修改密码和创建普通用户,不想创建用户可以 Ctrl+C 跳过,完成以后会留在一个 shell 里面。
六、将 U 盘中的 Armbian 系统写入 N1 盒子的 EMMC
接上一步,使用 root 用户及密码登录 armbian 后,在 bash 下执行 armbian-install 命令。按照提示输入“101”,选择文件系统输入“1”(选择ext4),这时开始将 U 盘中的 armbian 系统 copy 到 emmc ,整个过程大概需要 2~3 分钟,等待文件 copy 完后,按照提示输入 poweroff 命令关机,然后移除盒子上的 U 盘,给盒子重新加电后会使用 emmc 进入 armbian 系统,到此刷机工作就完成了。
注意:在将 armbian 写入 emmc 成功后,引导的先后顺序为先从 U 盘引导进入系统,没有插 U 盘时才使用 emmc 引导进入系统,所有如果你要使用 emmc 中的系统,请务必拔掉 U 盘。
root@armbian:~# armbian-install [ STEPS ] Installing Armbian to internal eMMC... [ STEPS ] Checking dependencies... [ INFO ] Dependency check completed. Proceeding installation... [ STEPS ] Initializing the environment... [ INFO ] Use mainline u-boot: [ no ] [ INFO ] Use ampart tool: [ yes ] [ INFO ] Show all devices: [ no ] [ INFO ] Internal eMMC : [ /dev/mmcblk2 ] [ STEPS ] Start selecting device... -------------------------------------------------------------------------------------- ID SOC MODEL DTB -------------------------------------------------------------------------------------- 101 s905d Phicomm-N1 meson-gxl-s905d-phicomm-n1.dtb 102 s905d Phicomm-N1(DMA-thresh) meson-gxl-s905d-phicomm-n1-thresh.dtb 103 s905d MECOOL-KI-Pro meson-gxl-s905d-mecool-ki-pro.dtb 104 s905d SML-5442TW meson-gxl-s905d-sml5442tw.dtb 105 s905x HG680P meson-gxl-s905x-p212.dtb 106 s905x B860H meson-gxl-s905x-b860h.dtb 107 s905x Nexbox-a95x meson-gxl-s905x-nexbox-a95x.dtb 108 s905x TX9 meson-gxl-s905x-tx9.dtb 109 s905x T95,XiaoMI-3S,X96 meson-gxl-s905x-p212.dtb 110 s905x TBee meson-gxl-s905x-tbee.dtb -------------------------------------------------------------------------------------- 111 s905w TX3-Mini meson-gxl-s905w-tx3-mini.dtb 112 s905w W95 meson-gxl-s905w-p281.dtb 113 s905w X96-Mini meson-gxl-s905w-x96-mini.dtb 114 s905w X96W,FunTV,MXQ-Pro-4K meson-gxl-s905w-x96w.dtb 115 s905l UNT402A,M201-S,MiBox-4C meson-gxl-s905l3b-m302a.dtb 116 s905l MG101,Mibox-4 meson-gxl-s905l-venz-v10.dtb 117 s905l2 MGV2000,MGV3000,M301A,CM201-1 meson-gxl-s905l2-x7-5g.dtb 118 s905l2 E900v21E,MGV2000-K,e900v21d meson-gxl-s905l2-x7-5g.dtb 119 s905l2 Wojia-TV-IPBS9505 meson-gxl-s905l2-ipbs9505.dtb 120 s905l3 CM311-1,HG680-LC,M401A,UNT402A meson-gxl-s905l2-x7-5g.dtb -------------------------------------------------------------------------------------- 121 s905l3 CM211-1,M411A,B860AV3.2-M meson-gxl-s905l3b-m302a.dtb 122 s905l3 UNT400G1,E900V22D-2 meson-gxl-s905l2-x7-5g.dtb 123 s905l3b E900V22D,TY1608 meson-gxl-s905l2-x7-5g.dtb 124 s905l3b E900V21E,E900V22E,MGV2000 meson-gxl-s905l3b-e900v22e.dtb 125 s905l3b M302A,M304A,CM201-1,CM211-1,CM311-1 meson-gxl-s905l3b-m302a.dtb 126 s905l3b UNT403A meson-gxl-s905l3b-m302a.dtb 127 s905l3b RG020ET-CA meson-gxl-s905l3b-e900v22e.dtb 128 s905l3b IP103H,TY1608,BV310,B860AV-2.1M meson-gxl-s905l3b-m302a.dtb 129 s905lb BesTV-R3300L,SumaVision-Q7,MG101 meson-gxl-s905x-p212.dtb 130 s905lb Q96-mini meson-gxl-s905x-p212.dtb -------------------------------------------------------------------------------------- 131 s905mb S65 meson-gxl-s905x-p212.dtb 0 Other Customize Enter-custom-dtb-name -------------------------------------------------------------------------------------- [ OPTIONS ] Please Input ID: 101 [ INFO ] Input Box ID: [ 101 ] [ INFO ] Model Name: [ Phicomm-N1 ] [ INFO ] FDTFILE: [ meson-gxl-s905d-phicomm-n1.dtb ] [ INFO ] MAINLINE_UBOOT: [ ] [ INFO ] BOOTLOADER_IMG: [ u-boot-2015-phicomm-n1.bin ] [ INFO ] UBOOT_OVERLOAD: [ u-boot-n1.bin ] [ INFO ] NEED_OVERLOAD: [ no ] [ STEPS ] Which type of filesystem do you want for your root? ----------------------------------------------- ID TYPE ----------------------------------------------- 1 ext4 2 btrfs ----------------------------------------------- [ OPTIONS ] Please Input ID (1/2): 1 [ INFO ] Input Type ID: [ 1 ] [ INFO ] Type of filesystem: [ ext4 ] [ STEPS ] Partitioning eMMC... [ INFO ] Start backing up the default bootloader. 4+0 records in 4+0 records out 4194304 bytes (4.2 MB, 4.0 MiB) copied, 2.19803 s, 1.9 MB/s [ INFO ] Delete the existing [ 2 ] partitions. [ INFO ] Start create MBR and partittion. [ INFO ] 02. Write Android bootloader: [ u-boot-2015-phicomm-n1.bin ] 444+0 records in 444+0 records out 444 bytes copied, 0.00781175 s, 56.8 kB/s 8191+0 records in 8191+0 records out 4193792 bytes (4.2 MB, 4.0 MiB) copied, 0.450597 s, 9.3 MB/s [ STEPS ] Processing BOOTFS partition... [ INFO ] Formatting BOOTFS partition... mkfs.fat 4.2 (2021-01-31) [ INFO ] Copying BOOTFS ... [ INFO ] Update the [ uEnv.txt ] file. [ STEPS ] Start processing the rootfs partition... [ INFO ] Formatting ROOTFS ... /dev/mmcblk2p2 contains a btrfs file system labelled 'ROOTFS_EMMC' [ INFO ] Copying ROOTFS ... [ INFO ] Copying [ etc ] ... [ INFO ] Copying [ home ] ... [ INFO ] Copying [ opt ] ... [ INFO ] Copying [ root ] ... [ INFO ] Copying [ selinux ] ... [ INFO ] Copying [ srv ] ... [ INFO ] Copying [ usr ] ... [ INFO ] Copying [ var ] ... [ INFO ] Generate the new fstab file. [ INFO ] Update the relevant parameters. [ SUCCESS ] Installation successful. Run [ poweroff ], remove the installation media then re-insert the power supply to boot new system.
七、Armbian 的简单设置
1、将 armbian 的更新源修改为清华源
Armbian 操作系统默认使用的官方更新源(ports.ubuntu.com)服务器在海外,连接速度和国内镜像源比起来较慢,建议修改为清华大学提供的镜像源。
mv /etc/apt/sources.list /etc/apt/sources.list.bak cat > /etc/apt/sources.list <<EOF deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse EOF mv /etc/apt/sources.list.d/armbian.list /etc/apt/sources.list.d/armbian.list.bak cat > /etc/apt/sources.list.d/armbian.list <<EOF deb [signed-by=/usr/share/keyrings/armbian.gpg] https://mirrors.tuna.tsinghua.edu.cn/armbian jammy main jammy-utils jammy-desktop EOF
更新本机已安装的软件包
apt update apt upgrade -y
2、修改时区
# 系统时间和时区 date -R # 修改时区,使用 tzselect 命令,然后选择 asia china beijing yes。 tzselect cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 再次查询系统时间和时区 date -R
3、为 N1 分配静态 IP 地址
参考以下示例,为 N1 分配同网段的静态 IP 地址,hwaddress 参数用于固定 Mac 地址,Mac 地址可以在盒子背后的标签上找到,或者使用 ifconfig 命令查询。修改完成后使用 reboot 命令重启盒子,然后使用新的 IP 地址连接盒子。
# 关闭 NetworkManager 服务 systemctl stop NetworkManager systemctl disable NetworkManager # 备份原始配置,分配静态 IP mv /etc/network/interfaces /etc/network/interfaces.bak cat > /etc/network/interfaces <<EOF source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static hwaddress 88:88:88:88:88:88 address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.1 iface eth0 inet6 auto EOF # 重新启动盒子 reboot
八、从 Armbian 刷到 Android 固件
1、在电脑上下载并安装“3.USB_Burning_Tools_v2.0.7.2_build2.exe”烧录软件,同时下载并解压 android 固件“5.N1_mod_by_webpad_v2.2_20180920.img.7z”备用。
2、运行 USB_Burning_tools 软件,如下图所示,选择 android 固件后,去掉“擦除flash”和“擦除bootloader”前的对勾,然后点击“开始”按钮,将晶晨短接神器插在 HDMI 接口上,USB双公头线插到靠近 HDMI 接口的 USB 口上,然后给 N1 盒子接上电源,这时软件就识别到了 N1 盒子,开始写入固件。
3、大约等待 3~4 分钟,会提示“100%:烧录成功”,这时先点击“停止”按钮,关闭烧录软件,然后拔掉 USB 线,拔掉电源后再次开机就进入了 android 系统。
本文出处:HiFeng'Blog
本文链接:https://www.hicairo.com/post/75.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!
2024-04-26 20:52:11
Juicity 协议是一个开源的网络代理协议,作者在开发 Juicity 协议时受到了 TUIC 的启发。Juicity、TUIC、Hysteria 协议一样,均基于 QUIC(Quick UDP Internet Connections)协议实现。QUIC 是一个由 Google 开发的基于 UDP 的传输层网络协议,旨在减少连接和传输延迟。Juicity 与 Hysteria 不同之处主要为使用的拥塞算法,Juicity 可以使用的拥塞算法包括 reno、cubic、bbr 和 bbr2 ,而 hysteria 可以使用 brutal 拥塞算法。 brutal 拥塞算法表现的更为霸道与暴力,因此在网络链路不好的情况下,Hysteria 协议比 Juicity 协议的传输速度要快一些。
正因为 hysteria 协议使用了 brutal 拥塞算法,可能会被 IDC 提供商误认为服务器在对外进行 DDOS 攻击,从而关停服务器。说明一下,我不是在黑 hysteria ,我目前主线路使用的也是 hysteria 协议,我想表达的是根据情况来选择合适的协议,例如在甲骨文云、谷歌云上可以使用同样基于 QUIC 的 Juicity 协议,以避免被封号的风险。
一、服务器安装环境
本次教程的测试环境为:Dartnode IPv4&IPv6 双栈 VPS ,1vCPU ,1GB Memory ,10 GB SSD ,Ubuntu 22.04.4 LTS ,同时需要一枚域名。
二、服务器端安装步骤
1、升级软件及操作系统内核
apt update apt upgrade -y apt -y install wget unzip uuid-runtime socat apt-get update apt-get upgrade apt-get upgrade linux-image-generic reboot
2、关闭防火墙
systemctl status ufw systemctl stop ufw systemctl disable ufw
3、开启 BBR
#查询支持的 TCP 拥塞控制算法 sysctl net.ipv4.tcp_available_congestion_control #查询应用的 TCP 拥塞控制算法 sysctl net.ipv4.tcp_congestion_control #启用 BBR TCP 拥塞控制算法 echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
4、申请域名证书
#创建 Juicity 配置文件目录 mkdir /etc/juicity #安装 acme.sh curl https://get.acme.sh | sh ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh acme.sh --set-default-ca --server letsencrypt #申请域名证书 #example.domain.com请替换为你的真实域名 #注意:纯ipv6主机,在下面命令中加上--listen-v6参数 acme.sh --issue -d example.domain.com --keylength ec-256 --standalone --insecure acme.sh --install-cert -d example.domain.com --ecc \ --key-file /etc/juicity/example.domain.com.key \ --fullchain-file /etc/juicity/example.domain.com.pem
5、安装 Juicity 服务器端
#下载最新版本的 Juicity wget -O /tmp/juicity-linux-x86_64.zip https://github.com/juicity/juicity/releases/download/v0.4.2/juicity-linux-x86_64.zip unzip -d /tmp/juicity /tmp/juicity-linux-x86_64.zip mv /tmp/juicity/juicity-server /usr/bin #将 Juicity 作为守护进程运行 mv /tmp/juicity/juicity-server.service /etc/systemd/system/ #服务器端配置文件 #可以使用 'uuidgen' 命令生成 UUID,使用 'openssl rand -base64 8' 命令生成 password 。 cat > /etc/juicity/server.json <<EOF { "listen": ":10086", "users": { "UUID": "password" }, "certificate": "/etc/juicity/example.domain.com.pem", "private_key": "/etc/juicity/example.domain.com.key", "congestion_control": "bbr", "disable_outbound_udp443": true, "log_level": "info" } EOF #启动 Juicity 服务端 systemctl daemon-reload systemctl enable juicity-server systemctl start juicity-server #查看当前状态 systemctl status juicity-server
三、 客户端配置
Juicity 客户端:https://github.com/juicity/juicity/releases/latest
1、根据客户端操作系统,下载对应的 Juicity 客户端,以 64 位 windows 操作系统,V2rayN V6.29 版本为例。
在官方网站下载 juicity-linux-x86_64.zip,解压后将 juicity-client.exe 文件 copy 到 v2rayN 安装目录 \bin\juicity 目录中。 如果 bin 目录中没有 juicity 文件夹,请自行创建。
用记事本创建一个 client.json 文件,内容如下:
其中 example.domain.com:10086 代表域名和服务器端监听的端口,请根据实际情况修改,同时修改 UUID 和 password 的值。
{ "listen": ":15000", "server": "example.domain.com:10086", "uuid": "UUID", "password": "password", "sni": "example.domain.com", "allow_insecure": false, "congestion_control": "bbr", "log_level": "info" }
2、v2rayN 客户端配置,点击菜单上“服务器”中的“添加自定义服务器”。
3、导入上一步配置好的 client.json 文件, Core 类型选择 juicity ,socks 端口填写上一步设置的监听端口 15000 后点确定按钮。
4、苹果手机 Shadowrocket 客户端配置,类型选择 juicity ,分别填入地址、端口、UUID、密码、SIN后保存。
juicity 协议的链接地址格式为:
juicity://uuid:[email protected]:port?congestion_control=bbr&sni=example.domain.com&allow_insecure=0&pinned_certchain_sha256=CERT_HASH
手机上敲字比较累,可以参考以上格式在计算机上制作好 juicity 协议的链接,然后将链接通过微信等发到手机,复制后在 Shadowrocket 客户端导入即可。
四、测速情况
我目前使用的是 200M 宽带,以下是使用 Dartnode 同一台 VPS 在晚高峰分别使用 hysteria2 和 juicity 的测速情况,可以看出 juicity 协议的速度的确要比 hysteria2 协议慢一些。
本文出处:HiFeng'Blog
本文链接:https://www.hicairo.com/post/74.html
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA许可协议。转载请注明出处!