diff --git a/zh/blog/tech/router/index.html b/zh/blog/tech/router/index.html index 1e0eb060..5e34e920 100644 --- a/zh/blog/tech/router/index.html +++ b/zh/blog/tech/router/index.html @@ -167,7 +167,7 @@

使用树莓派4B+安装OpenWrt用作旁路由 +2024-11-11 · 11 分钟 · 5093 字 · Kyxie @@ -192,12 +192,12 @@

Wireguard配置

-

安装 Ubuntu sudo apt update sudo apt upgrade sudo apt install wireguard OpenWrt 所需插件详见:使用树莓派4B+安装OpenWrt用作旁路由 | Kunyang’s Blog 配置Wireguard 进入/etc/wiregu...

+

Ubuntu 安装 sudo apt update sudo apt upgrade sudo apt install wireguard 配置 进入/etc/wireguard,并生成密钥对 sudo -i cd /etc/wireguard umask 077 wg genkey | tee privatekey | wg pubkey > publickey 编辑配置文件wg0.conf [Interface] PrivateKey...

+2024-05-25 · 3 分钟 · 1501 字 · Kyxie diff --git a/zh/blog/tech/router/index.xml b/zh/blog/tech/router/index.xml index 1515b454..95356634 100644 --- a/zh/blog/tech/router/index.xml +++ b/zh/blog/tech/router/index.xml @@ -31,7 +31,7 @@ Sat, 25 May 2024 00:19:19 -0400 https://kyxie.me/zh/blog/tech/router/wireguard/ - 安装 Ubuntu sudo apt update sudo apt upgrade sudo apt install wireguard OpenWrt 所需插件详见:使用树莓派4B+安装OpenWrt用作旁路由 | Kunyang’s Blog 配置Wireguard 进入/etc/wiregu + Ubuntu 安装 sudo apt update sudo apt upgrade sudo apt install wireguard 配置 进入/etc/wireguard,并生成密钥对 sudo -i cd /etc/wireguard umask 077 wg genkey | tee privatekey | wg pubkey > publickey 编辑配置文件wg0.conf [Interface] PrivateKey diff --git a/zh/blog/tech/router/raspberrypi-openwrt/index.html b/zh/blog/tech/router/raspberrypi-openwrt/index.html index 7bd87995..110ce31e 100644 --- a/zh/blog/tech/router/raspberrypi-openwrt/index.html +++ b/zh/blog/tech/router/raspberrypi-openwrt/index.html @@ -98,8 +98,8 @@ "keywords": [ "Raspberry Pi", "OpenWrt" ], - "articleBody": "需要的硬件和软件 硬件 一台有网线接口的电脑 内存2GB以上的树莓派4B+ 8GB以上的小SD卡,可以插在树莓派上 SD卡的读卡器 一根网线 显示器(非必须),Micro USB - HDMI线(非必须) 软件 Balena Etcher,MacBook用户可以选择下载这个,也可以选择用命令行代替 VM Virtual Box和Ubuntu虚拟机,非必须,用于编译OpenWrt固件,不过也可以选择下载别人编译好的固件。有一点需要注意,我第一次编译60GB就足够了,但是第二次希望编译一个固件库,想把所有功能全部选上,60GB不够,建议分配128GB储存 SecureCRT或PuTTy,非必须,不知道大家用什么命令行终端,但是我MacBook和Windows都是用系统自带的命令行终端 获得镜像 下载镜像 可以从OpenWrt的官网下载镜像\n编译镜像 但我是比较能折腾的,我找到了这个仓库:Lean,readme有比较详细的编译步骤,于是决定自己尝试一下\n第一次编译 首先在Ubuntu上clone repo\nhttps://github.com/coolsnowwolf/lede.git 安装依赖包\nsudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \\ bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \\ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \\ libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \\ libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python3 \\ python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \\ uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev 更新feed并选择配置\ncd lede ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig 输入这个命令后就开启了配置页面,我使用的是树莓派4B,我目前的常用场景有见这里\n# 编译的目标系统 TargetSystem: - Broadcom BCM27xx Subtarget: - BCM2711 boards (64 bit) TargetProfile: - Raspberry Pi 4B/400/4CM (64bit) # 镜像参数 TargetImages: - ext4 # ext4格式的固件可方便地调整分区大小 - squashfs # squashfs格式的固件可恢复出厂设置 - KernelPartitionSize: 64 # boot分区大小为64M - RootFilesystemPartitionSize: 512 # root分区大小为512M # 可选工具 BaseSystem: - block-mount # 在LuCI界面添加\u003c挂载点\u003e菜单 - blockd # 自动挂载设备 - wireless-tools # 无线扩展工具 Administration: - htop # 添加htop命令 Firmware: - xxx # 选择你需要的网卡固件,默认即可 # 文件系统 KernelModules: Filesystems: - kmod-fs-ext4 - kmod-fs-ntfs - kmod-fs-squashfs - kmod-fs-vfat - kmod-fuse # 网卡支持 NetworkDevices: - kmod-xxx # 有线网卡支持,跟以下几项可根据需求选择性添加 NetworkSupport: - kmod-wireguard WirelessDrivers: - kmod-rt2800-usb # 添加Ralink RT5370芯片的USB无线网卡驱动 USBSupport: - kmod-usb-net: - kmod-usb-net-asix # 添加支持亚信的有线网卡支持 - kmod-usb-net-asix-ax88179 # 添加USB3.0的有线网卡芯片AX88179的驱动 - kmod-usb-net-rtl8152 # 添加USB2/3的有线网卡RTL8152/3芯片支持 - kmod-usb-net-sr9700 # 添加USB2.0的有线网卡SR9700芯片支持 - kmod-usb-core # 启用USB支持 - kmod-usb-hid # USB键鼠支持 - kmod-usb-ohci # 添加OHCI支持 - kmod-usb-storage # 启用USB存储 - kmod-usb-storage-extras - kmod-usb-uhci # 添加UHCI支持 - kmod-usb2 # 开启USB2支持 - kmod-usb3 # 开启USB3支持 # LuCI设置 LuCI: Collections: - luci # 开启luci Modules: Translations: - Chinese(zh-cn) # 中文支持 Themes: - luci-theme-agron # 添加主题 # LuCI应用 Applications: - luci-app-adguardhome # 去广告 - luci-app-alist # 文件共享 - luci-app-aria2 # 下载工具 - luci-app-advanced-reoot - luci-app-filebrowser # 文件管理 - luci-app-filetransfer - luci-app-firewall # 防火墙 - luci-app-frps - luci-app-frpc # 内网穿透 - luci-app-hd-idle # 硬盘休眠 # - luci-app-lucky - luci-app-opkg # 软件包 # - luci-app-openvpn # - luci-app-openvpn-server - luci-app-qos # 服务质量 - luci-app-samba # 网络共享 - luci-app-shadowsocks-libev # 翻墙软件 - luci-app-upnp # UPnP服务 - luci-app-wol # 网络唤醒 Protocols: - luci-protocol-wireguard # 网络工具 Network: DownloadManager: - ariang # Aria2管理页面 FileTransfer: - Aria2Configuration: - *** # 选择Aria2支持的功能 - curl # 添加curl命令 - wget # 添加wget命令 VPN: - wireguard-tools # 实用工具 Utilities: Compression: - bsdtar # tar打包工具 - gzip # GZ 压缩套件 Disc: - fdisk # 磁盘分区工具 - lsblk # 磁盘查看工具 Filesystem: - ntfs-3g # NTFS读写支持 - resize2fs # 分区大小调整 Terminal: - screen # 添加screen - pciutils # 添加lspci命令 - usbutils # 添加lsusb命令 配置完成后选择Save,会保存为一个.config文件。在最后一步安装之前还需要安装screen,用于创建持久会话,否则如果不小心关了ssh之前编译的就都没了(你猜我是怎么知道的)\nsudo apt install screen screen -S buildlede 最后执行命令用8个线程下载dl库,第一次编译用1个线程编译。在这里一开始我用的AWS的Ubuntu一直下不下来,没有办法换成了本地的Ubuntu虚拟机才下载编译成功\nmake download -j8 make V=s -j1 然后就是等待编译,编译完成后在bin\\targets可以选择openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz这个版本进行烧录\n修改默认配置(可选)\n修改默认IP地址到192.168.2.66\nsed -i 's/192.168.1.1/192.168.2.66/g' package/base-files/files/bin/config_generate 单独编译 有时候用着用着发现我们需要安装一个插件,这种情况下我们可以单独编译一个插件\n编辑.config文件\nmake menuconfig 找到我们想单独编译的插件,比如luci-app-diskman,这是个管理路由器上的磁盘和分区的插件,第一次编译选择为[*],意思是作为一个内置模块编译,不可以卸载。这次的话我们可以选择为[M],意思是作为一个模块编译\n使用如下命令可以编译\nmake package/luci-app-diskman/compile V=s 编译完成后在/bin/packages/aarch64_cortex-a72/luci文件夹下能找到luci-app-diskman_v0.2.11_all.ipk\n打开openwrt,System -\u003e File Transfer选择文件上传,右下角安装就可以了\n我安装完后OpenWrt没有立刻出现新安装的插件,过了一段时间才出现的\n如果要单独编译内核模块,比如kmod-wireguard,可以在kernel module中选中它为[M],然后运行\nmake package/kernel/linux/compile V=s 很快编译就完成了,编译出来的包在bin/packages///kmod-wireguard_xxx.ipk\n第二次编译 拉取最新feeds\nsudo sh -c \"apt update \u0026\u0026 apt upgrade -y\" git pull ./scripts/feeds update -a \u0026\u0026 ./scripts/feeds install -a 清除旧的编译产物(可选)\nmake clean # 源码有大规模更新或者内核更新后执行,以保证编译质量 # 此操作会删除 /bin 和 /build_dir 目录中的文件 make dirclean # 如果要更换架构,例如要从 x86_64 换到 MediaTek Ralink MIPS 建议执行以下命令深度清理 # 此操作会删除 /bin 和 /build_dir 目录的中的文件(make clean),以及 /staging_dir、/toolchain、/tmp 和 /logs 中的文件 编译\nmake defconfig make download -j8 find dl -size -1024c -exec ls -l {} \\; make -j$(nproc) || make -j1 || make -j1 V=s # 如果需要重新配置 # 清除临时文件和编译配置文件 rm -rf ./tmp \u0026\u0026 rm -rf .config make menuconfig make download -j8 find dl -size -1024c -exec ls -l {} \\; # 多线程编译失败后进入单线程编译 make -j$(nproc) || make -j1 || make -j1 V=s 烧录 Windows 可以使用Balena Etcher或者其他的disk imager软件将image烧录到SD卡中,非常简单,按顺序一步一步来即可\nMacOS MacOS也可以使用Balena Etcher将镜像导入到SD卡中,但是我不喜欢下乱七八糟的软件,干脆直接使用命令行了\n找到SD卡的磁盘编号,这里我的SD卡磁盘为/dev/disk4\ndiskutil list /dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.9 GB disk4 1: Windows_FAT_32 BOOT 67.1 MB disk4s1 2: Linux 109.1 MB disk4s2 (free space) 7.7 GB - 由于我这里以前装过一个不带GUI版本的OpenWrt,SD卡多了几个分区,这次打算重新装一个带着GUI的\n首先恢复分区,这个命令同时把SD卡进行格式化\ndiskutil eraseDisk FAT32 SDCARD MBRFormat /dev/disk4 恢复分区之后\ndiskutil list /dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.9 GB disk4 1: DOS_FAT_32 SDCARD 7.9 GB disk4s1 输入以下命令卸载(但不移除) SD 卡,否则会显示busy\ndiskutil unmountDisk /dev/disk4 Unmount of all volumes on disk4 was successful 解压下载的image\ngunzip ./openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz 使用 dd 写入解压后的 .img 文件,注意这一步千万不要抄错了磁盘编号,否则伤害不可逆,dd是个很强的命令\nsudo dd if=/Users/kunyangxie/Desktop/openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img of=/dev/disk4 bs=1M status=progress 286261248 bytes (286 MB, 273 MiB) transferred 69.070s, 4144 kB/s 275+1 records in 275+1 records out 288454957 bytes transferred in 69.735447 secs (4136418 bytes/sec) 如果不报错一般就是成功了\n最后将SD卡从电脑拔出,插到树莓派上,启动树莓派,这时使用网线将树莓派的以太网接口和电脑的以太网接口相连。由于OpenWrt 默认将树莓派的eth0接口桥接到br-lan并使用 IP 地址 192.168.1.1,我们要配置一下电脑端的Ethernet接口是否也在192.168.1.x的子网,x可以选2 - 255的随便一个数\n当树莓派就跟电脑在相同子网后,在浏览器中输入192.168.1.1,就能登录到OpenWrt的GUI(LuCI)了,默认用户名和密码是root和password\n大功告成了\n连接路由器 我家主路由器使用的子网为192.168.2.x,需要将树莓派改为这个子网下(当然如果主路由器子网为192.168.1.x的话就不用多折腾这一步了)。我们先禁用桥接模式和修改IP地址\nvi /etc/config/network 修改文件为\nconfig interface 'lan' option device 'eth0' option proto 'static' option ipaddr '192.168.2.66' option netmask '255.255.255.0' option gateway '192.168.2.1' option dns '192.168.2.1' option ip6assign '60' 禁用DHCP,防止跟主路由器的DHCP冲突\nvi /etc/config/dhcp config dhcp 'lan' option interface 'lan' option ignore '1' 检查防火墙配置\nvi /etc/config/firewall config zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' 应用设置\n/etc/init.d/network restart 这时由于我们电脑还在192.168.1.x子网,但是树莓派已经到了192.168.2.x子网了,所以连接必定是断开的,我们再把电脑端的Ethernet端口改回192.168.2.x子网,就又能重新访问了\n将树莓派与电脑断开连接,插到路由器的LAN口上,应该能正常访问网络,而且电脑也能访问树莓派了\n设置旁路由 以上步骤只是将树莓派作为一个用网设备加入了家庭的局域网,我们的终端设备还是沿着主路由这条线进行通信,要想作为旁路由还需要进一步设置\n其实很简单,我们只要将Wifi的网关从路由器之前DHCP自动分配的地址改为旁路由树莓派即可,假设我的主路由器IP地址为192.168.2.1,我的电脑IP地址为192.168.2.54,我的树莓派的IP地址为192.168.2.66,我需要这么修改:\nMacBook也一样\n同样的iPhone也可以设置,这里我就不放图了\n因为怕炸网我暂时先使用这种非侵入式的设置,它只影响把网关设置为软路由的终端,这样一旦网坏了只影响部分设备,或者我修改一下网关修改到主路由器的IP地址就可以了\n安装插件 受到韩风Talk的启发,由于刚开始折腾还不知道哪些插件好用,我也觉得我应该制作一个插件库\n卸载插件 可以在System -\u003e Software -\u003e Installed中卸载插件\n或者使用opkg包管理工具,比如\nopkg remove luci-app-samba 可以使用这条命令来删除不需要的依赖项\nopkg remove --autoremove 安装插件 首先需要在Ubuntu上编译插件\nmake menuconfig 在LuCI -\u003e Applications可以把固件全选上,毕竟我们是做个固件库,之后有啥需求就装啥。选择时应该模块化,按空格让前面括号里出现一个M。保存后回到命令行开始编译\nmake -j1 V=s 编译完成后在bin\\packages中就能找到我们编译的全部插件了,而且都为.ipk格式\n常见使用场景 去广告 所需插件(具体配置路径见这里) luci-app-adguardhome 配置参考:【韩风Talk】Openwrt插件对广告说不,怎么做?两款热门插件随你用! 外网访问我的Windows台式机 OpenVPN 所需插件(具体配置路径见这里) luci-app-openvpn luci-app-openvpn-server luci-i18n-openvpn-server-zh-cn luci-i18n-openvpn-zh-cn open-vpn-easy-rsa openvpn-openssl Wireguard Wireguard因为比OpenVPN轻量化速度更快,因此是我目前首选 所需插件(具体配置路径见这里) kmod-wireguard luci-proto-wireguard wireguard-tools luci-app-wireguard(可以不选,而且在我的menuconfig没找到) 详细配置见:Wireguard配置 | Kunyang’s Blog ZeroTire 所需插件(具体配置路径见这里)\nluci-app-zerotire 配置参考:【韩风Talk】Openwrt的Zerotier插件玩法,异地组网不求人,大虚拟局域网走起!\n文件管理 所需插件(具体配置路径见这里)\nluci-app-filebrowser:Service -\u003e File Browser luci-app-samba:NAS -\u003e Network Shares,有一点视频里说的点击Path会进入/luci/admin/system/fstab,但是我的menuconfig没有luci-app-fstab,因此会404,好在如果编译了BaseSystem -\u003e block-mount的话这个url:/luci/admin/system/mounts跟视频里的是一样的。我认为这是个bug luci-app-filetransfer:System -\u003e File Transfer,用于上传ipk包 配置参考:【韩风Talk】Openwrt文件管理的玩法合集,这期顺便解决中文乱码问题!\n", - "wordCount" : "4603", + "articleBody": "需要的硬件和软件 硬件 一台有网线接口的电脑 内存2GB以上的树莓派4B+ 8GB以上的小SD卡,可以插在树莓派上 SD卡的读卡器 一根网线 显示器(非必须),Micro USB - HDMI线(非必须) 软件 Balena Etcher,MacBook用户可以选择下载这个,也可以选择用命令行代替 VM Virtual Box和Ubuntu虚拟机,非必须,用于编译OpenWrt固件,不过也可以选择下载别人编译好的固件。有一点需要注意,我第一次编译60GB就足够了,但是第二次希望编译一个固件库,想把所有功能全部选上,60GB不够,建议分配128GB储存 SecureCRT或PuTTy,非必须,不知道大家用什么命令行终端,但是我MacBook和Windows都是用系统自带的命令行终端 获得镜像 下载镜像 可以从OpenWrt的官网下载镜像\n编译镜像 但我是比较能折腾的,我找到了这个仓库:Lean,readme有比较详细的编译步骤,于是决定自己尝试一下\n第一次编译 首先在Ubuntu上clone repo\nhttps://github.com/coolsnowwolf/lede.git 安装依赖包\nsudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \\ bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \\ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \\ libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \\ libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python3 \\ python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \\ uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev 更新feed并选择配置\ncd lede ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig 输入这个命令后就开启了配置页面,我使用的是树莓派4B,我目前的常用场景有见这里\n# 编译的目标系统 TargetSystem: - Broadcom BCM27xx Subtarget: - BCM2711 boards (64 bit) TargetProfile: - Raspberry Pi 4B/400/4CM (64bit) # 镜像参数 TargetImages: - ext4 # ext4格式的固件可方便地调整分区大小 - squashfs # squashfs格式的固件可恢复出厂设置 - KernelPartitionSize: 64 # boot分区大小为64M - RootFilesystemPartitionSize: 2048 # root分区大小为2048M # 可选工具 BaseSystem: - block-mount # 在LuCI界面添加\u003c挂载点\u003e菜单 - blockd # 自动挂载设备 - wireless-tools # 无线扩展工具 Administration: - htop # 添加htop命令 Firmware: - xxx # 选择你需要的网卡固件,默认即可 # 文件系统 KernelModules: Filesystems: - kmod-fs-ext4 - kmod-fs-ntfs - kmod-fs-squashfs - kmod-fs-vfat - kmod-fuse # 网卡支持 NetworkDevices: - kmod-xxx # 有线网卡支持,跟以下几项可根据需求选择性添加 NetworkSupport: - kmod-wireguard WirelessDrivers: - kmod-rt2800-usb # 添加Ralink RT5370芯片的USB无线网卡驱动 USBSupport: - kmod-usb-net: - kmod-usb-net-asix # 添加支持亚信的有线网卡支持 - kmod-usb-net-asix-ax88179 # 添加USB3.0的有线网卡芯片AX88179的驱动 - kmod-usb-net-rtl8152 # 添加USB2/3的有线网卡RTL8152/3芯片支持 - kmod-usb-net-sr9700 # 添加USB2.0的有线网卡SR9700芯片支持 - kmod-usb-core # 启用USB支持 - kmod-usb-hid # USB键鼠支持 - kmod-usb-ohci # 添加OHCI支持 - kmod-usb-storage # 启用USB存储 - kmod-usb-storage-extras - kmod-usb-uhci # 添加UHCI支持 - kmod-usb2 # 开启USB2支持 - kmod-usb3 # 开启USB3支持 # LuCI设置 LuCI: Collections: - luci # 开启luci Modules: Translations: - Chinese(zh-cn) # 中文支持 Themes: - luci-theme-agron # 添加主题 # LuCI应用 Applications: - luci-app-adguardhome # 去广告 - luci-app-alist # 文件共享 - luci-app-aria2 # 下载工具 - luci-app-advanced-reoot - luci-app-cloudflared - luci-app-filebrowser # 文件管理 - luci-app-filetransfer - luci-app-firewall # 防火墙 - luci-app-frps - luci-app-frpc # 内网穿透 - luci-app-hd-idle # 硬盘休眠 # - luci-app-lucky - luci-app-opkg # 软件包 - luci-app-openvpn - luci-app-openvpn-server - luci-app-qos # 服务质量 - luci-app-samba # 网络共享 - luci-app-shadowsocks-libev # 翻墙软件 - luci-app-upnp # UPnP服务 - luci-app-wol # 网络唤醒 Protocols: - luci-protocol-wireguard # 网络工具 Network: DownloadManager: - ariang # Aria2管理页面 FileTransfer: - Aria2Configuration: - *** # 选择Aria2支持的功能 - curl # 添加curl命令 - wget # 添加wget命令 IP Addresses and Names: - ddns-scripts-cloudflare - drill VPN: - wireguard-tools # 实用工具 Utilities: Compression: - bsdtar # tar打包工具 - gzip # GZ 压缩套件 Disc: - fdisk # 磁盘分区工具 - lsblk # 磁盘查看工具 Filesystem: - ntfs-3g # NTFS读写支持 - resize2fs # 分区大小调整 - f2fs-tools Terminal: - screen # 添加screen - pciutils # 添加lspci命令 - usbutils # 添加lsusb命令 - losetup - qrencode 配置完成后选择Save,会保存为一个.config文件。在最后一步安装之前还需要安装screen,用于创建持久会话,否则如果不小心关了ssh之前编译的就都没了(你猜我是怎么知道的)\nsudo apt install screen screen -S buildlede 最后执行命令用8个线程下载dl库,第一次编译用1个线程编译。在这里一开始我用的AWS的Ubuntu一直下不下来,没有办法换成了本地的Ubuntu虚拟机才下载编译成功\nmake download -j8 make V=s -j1 然后就是等待编译,编译完成后在bin\\targets可以选择openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz这个版本进行烧录\n单独编译 有时候用着用着发现我们需要安装一个插件,这种情况下我们可以单独编译一个插件\n编辑.config文件\nmake menuconfig 找到我们想单独编译的插件,比如luci-app-diskman,这是个管理路由器上的磁盘和分区的插件,第一次编译选择为[*],意思是作为一个内置模块编译,不可以卸载。这次的话我们可以选择为[M],意思是作为一个模块编译\n使用如下命令可以编译\nmake package/luci-app-diskman/compile V=s 编译完成后在/bin/packages/aarch64_cortex-a72/luci文件夹下能找到luci-app-diskman_v0.2.11_all.ipk\n打开openwrt,System → File Transfer选择文件上传,右下角安装就可以了\n我安装完后OpenWrt没有立刻出现新安装的插件,过了一段时间才出现的\n如果要单独编译内核模块,比如kmod-wireguard,可以在kernel module中选中它为[M],然后运行\nmake package/kernel/linux/compile V=s 很快编译就完成了,编译出来的包在bin/packages///kmod-wireguard_xxx.ipk\n第二次编译 拉取最新feeds\nsudo sh -c \"apt update \u0026\u0026 apt upgrade -y\" git pull ./scripts/feeds update -a \u0026\u0026 ./scripts/feeds install -a 清除旧的编译产物(可选)\nmake clean # 源码有大规模更新或者内核更新后执行,以保证编译质量 # 此操作会删除 /bin 和 /build_dir 目录中的文件 make dirclean # 如果要更换架构,例如要从 x86_64 换到 MediaTek Ralink MIPS 建议执行以下命令深度清理 # 此操作会删除 /bin 和 /build_dir 目录的中的文件(make clean),以及 /staging_dir、/toolchain、/tmp 和 /logs 中的文件 编译\nmake defconfig make download -j8 find dl -size -1024c -exec ls -l {} \\; make -j$(nproc) || make -j1 || make -j1 V=s 制作Docker镜像 以上的教程能得到使OpenWrt直接在树莓派上运行的镜像,但是目前我的想法是,让树莓派运行Ubuntu作为主系统,OpenWrt作为Docker Image部署在树莓派上,这样我们还可以运行一些其他的服务,以后更换重新编译的OpenWrt镜像也就不需要重新刷机了,仅仅换个Docker镜像即可。\n首先解压镜像文件,这里我们选择openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz\ngzip -d openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz 挂载镜像文件\nsudo losetup -fP openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img sudo mount /dev/loop0p2 /mnt 制作rootfs.tar\nsudo tar -C /mnt -czf rootfs.tar . sudo umount /mnt sudo losetup -d /dev/loop0 创建Dockerfile\nFROM arm64v8/alpine:latest ADD rootfs.tar / CMD [\"/sbin/init\"] 构建Docker镜像\nsudo docker buildx build --platform linux/arm64 -t openwrt-docker --load . 上传到Dockerhub\nsudo docker tag openwrt-docker dockerhub-username/openwrt-docker:latest sudo docker push dockerhub-username/openwrt-docker:latest 然后回到树莓派,拉取镜像,注意这里最好用命令行\ndocker pull dockerhub-username/openwrt-docker:latest 创建一个容器来运行镜像\ndocker run -it --name openwrt-docker dockerhub-username/openwrt-docker:latest 烧录 直接烧录的image我们选择openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz\nWindows 可以使用Balena Etcher或者其他的disk imager软件将image烧录到SD卡中,非常简单,按顺序一步一步来即可\nMacOS MacOS也可以使用Balena Etcher将镜像导入到SD卡中,但是我不喜欢下乱七八糟的软件,干脆直接使用命令行了\n找到SD卡的磁盘编号,这里我的SD卡磁盘为/dev/disk4\ndiskutil list /dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.9 GB disk4 1: Windows_FAT_32 BOOT 67.1 MB disk4s1 2: Linux 109.1 MB disk4s2 (free space) 7.7 GB - 由于我这里以前装过一个不带GUI版本的OpenWrt,SD卡多了几个分区,这次打算重新装一个带着GUI的\n首先恢复分区,这个命令同时把SD卡进行格式化\ndiskutil eraseDisk FAT32 SDCARD MBRFormat /dev/disk4 恢复分区之后\ndiskutil list /dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.9 GB disk4 1: DOS_FAT_32 SDCARD 7.9 GB disk4s1 输入以下命令卸载(但不移除) SD 卡,否则会显示busy\ndiskutil unmountDisk /dev/disk4 解压下载的image\ngunzip ./openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz 使用 dd 写入解压后的 .img 文件,注意这一步千万不要抄错了磁盘编号,否则伤害不可逆,dd是个很强的命令\nsudo dd if=/Users/xxx/Desktop/openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img of=/dev/disk4 bs=1M status=progress 如果不报错一般就是成功了\n最后将SD卡从电脑拔出,插到树莓派上,启动树莓派,这时使用网线将树莓派的以太网接口和电脑的以太网接口相连。由于OpenWrt 默认将树莓派的eth0接口桥接到br-lan并使用 IP 地址 192.168.1.1,我们要配置一下电脑端的Ethernet接口是否也在192.168.1.x的子网,x可以选2 - 255的随便一个数\n当树莓派就跟电脑在相同子网后,在浏览器中输入192.168.1.1,就能登录到OpenWrt的GUI(LuCI)了,默认用户名和密码是root和password\n大功告成了\n连接路由器 我家主路由器使用的子网为192.168.2.x,需要将树莓派改为这个子网下(当然如果主路由器子网为192.168.1.x的话就不用多折腾这一步了)。我们先禁用桥接模式和修改IP地址\nvi /etc/config/network 修改文件为\nconfig interface 'lan' option device 'eth0' option proto 'static' option ipaddr '192.168.2.66' option netmask '255.255.255.0' option gateway '192.168.2.1' option dns '192.168.2.1' option ip6assign '60' 禁用DHCP,防止跟主路由器的DHCP冲突\nvi /etc/config/dhcp config dhcp 'lan' option interface 'lan' option ignore '1' 检查防火墙配置\nvi /etc/config/firewall config zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' 应用设置\n/etc/init.d/network restart 这时由于我们电脑还在192.168.1.x子网,但是树莓派已经到了192.168.2.x子网了,所以连接必定是断开的,我们再把电脑端的Ethernet端口改回192.168.2.x子网,就又能重新访问了\n将树莓派与电脑断开连接,插到路由器的LAN口上,应该能正常访问网络,而且电脑也能访问树莓派了\n设置旁路由 以上步骤只是将树莓派作为一个用网设备加入了家庭的局域网,我们的终端设备还是沿着主路由这条线进行通信,要想作为旁路由还需要进一步设置\n其实很简单,我们只要将Wifi的网关从路由器之前DHCP自动分配的地址改为旁路由树莓派即可,假设我的主路由器IP地址为192.168.2.1,我的电脑IP地址为192.168.2.54,我的树莓派的IP地址为192.168.2.66,我需要这么修改:\nMacBook也一样\n同样的iPhone也可以设置,这里我就不放图了\n因为怕炸网我暂时先使用这种非侵入式的设置,它只影响把网关设置为软路由的终端,这样一旦网坏了只影响部分设备,或者我修改一下网关修改到主路由器的IP地址就可以了\n详见:软路由做旁路由三步搞定!openwrt软路由 R2S R4S openwrt软路由上网设置\n安装插件 卸载插件 可以在System → Software → Installed中卸载插件 注意直接编译进内核固件的插件无法卸载 安装插件 直接安装 国外使用\nsrc/gz openwrt_core https://downloads.openwrt.org/releases/23.05.0/targets/bcm27xx/bcm2711/packages src/gz openwrt_base https://downloads.openwrt.org/releases/23.05.0/packages/aarch64_cortex-a72/base src/gz openwrt_luci https://downloads.openwrt.org/releases/23.05.0/packages/aarch64_cortex-a72/luci src/gz openwrt_packages https://downloads.openwrt.org/releases/23.05.0/packages/aarch64_cortex-a72/packages src/gz openwrt_routing https://downloads.openwrt.org/releases/23.05.0/packages/aarch64_cortex-a72/routing src/gz openwrt_telephony https://downloads.openwrt.org/releases/23.05.0/packages/aarch64_cortex-a72/telephony 国内使用\nsrc/gz openwrt_core https://mirrors.tencent.com/lede/snapshots/targets/bcm27xx/bcm2711/packages src/gz openwrt_base https://mirrors.tencent.com/lede/snapshots/packages/aarch64_cortex-a72/base src/gz openwrt_luci https://mirrors.tencent.com/lede/releases/18.06.9/packages/aarch64_cortex-a72/luci src/gz openwrt_packages https://mirrors.tencent.com/lede/snapshots/packages/aarch64_cortex-a72/packages src/gz openwrt_routing https://mirrors.tencent.com/lede/snapshots/packages/aarch64_cortex-a72/routing src/gz openwrt_telephony https://mirrors.tencent.com/lede/snapshots/packages/aarch64_cortex-a72/telephony 自己编译 首先需要在Ubuntu上编译插件\nmake menuconfig 在LuCI → Applications可以把固件全选上,毕竟我们是做个固件库,之后有啥需求就装啥。选择时应该模块化,按空格让前面括号里出现一个M。保存后回到命令行开始编译\nmake -j1 V=s 编译完成后在bin\\packages中就能找到我们编译的全部插件了,而且都为.ipk格式\n常见使用场景 去广告 所需插件(具体配置路径见这里) luci-app-adguardhome 配置参考:【韩风Talk】Openwrt插件对广告说不,怎么做?两款热门插件随你用!_哔哩哔哩_bilibili 外网访问我的Windows台式机 Wireguard Wireguard因为比OpenVPN轻量化速度更快,因此是我目前首选 所需插件(具体配置路径见这里) kmod-wireguard luci-proto-wireguard wireguard-tools luci-app-wireguard(可以不选,而且在我的menuconfig没找到) 详细配置见:Wireguard配置 | Kunyang’s Blog ZeroTire 所需插件\nluci-app-zerotire 配置参考:【韩风Talk】Openwrt的Zerotier插件玩法,异地组网不求人,大虚拟局域网走起!_哔哩哔哩_bilibili\nOpenVPN 所需插件 luci-app-openvpn luci-app-openvpn-server luci-i18n-openvpn-server-zh-cn luci-i18n-openvpn-zh-cn open-vpn-easy-rsa openvpn-openssl 文件管理 推荐插件 luci-app-filebrowser:Service → File Browser luci-app-samba:NAS → Network Shares,有一点视频里说的点击Path会进入/luci/admin/system/fstab,但是我的menuconfig没有luci-app-fstab,因此会404,好在如果编译了BaseSystem → block-mount的话这个url:/luci/admin/system/mounts跟视频里的是一样的。我认为这是个bug luci-app-filetransfer:System → File Transfer,用于上传ipk包 luci-app-alist:Services → AList 配置参考: 【韩风Talk】Openwrt文件管理的玩法合集,这期顺便解决中文乱码问题!_哔哩哔哩_bilibili 这期玩Alist的网络安全防护,随便折腾一下免费的内网穿透_哔哩哔哩_bilibili 扩容 OpenWrt的空间扩容问题,可以这么直接解决!_哔哩哔哩_bilibili OpenWrt空间扩容:这波补充超有料!_哔哩哔哩_bilibili ", + "wordCount" : "5093", "inLanguage": "zh", "datePublished": "2024-11-11T13:13:13-04:00", "dateModified": "2024-11-15T14:35:15-05:00", @@ -204,7 +204,7 @@