标签: openwrt

  • 上海移动IPTV单线复用

    1. 运营商光猫桥接
      拓朴图:

      这是最简单的一种实现方法,拓扑图是最简化的情况,交换机可以多个串联,还可以使用支持Vlan的交换机。
      pon stick设置

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      DHCP Server关闭
      MTU 1500
      启用Vlan 选中
      Vlanid 1101
      LAN端口绑定 LAN1

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      MTU 1500
      启用Vlan 选中
      Vlanid 1103
      Openwrt设置
      IPv6 ULA 前缀:设置为空,机顶盒不支持ula并会导致机顶盒ipv6不通,如果不需要机顶盒的ipv6支持也可以不设置为空
      防火墙设置

      网络拓扑
      如果使用的是管理型交换机自己根据需要配置,至于网上提到的dhcp option125我这里没有用到,如果有用到的可以参考网上的贴子。我这里把vlan配置好就能用了。
      openwrt中dhcp option可以这样配置(不必要):
    2. 猫棒+openwrt路由器
      我用的是MA5671A,在猫棒上把互操作兼容模式关闭,这样把所有的Vlan透传到路由器
      网络拓朴

      openwrt上把所有端口放到一个网桥中,把openwrt路由器当成一个交换机然后划分vlan

      重点是其中的1101,1103,50这3个vlan,这是从pon网络传过来的。31,33这两个vlan是在本地创建的,我把局域网和iptv的网段通过vlan分隔了。其它的vlan没有用,我只是把pon网络支持的vlan全配置了。
      防火墙的配置参考上面,IPv6 ULA 前缀也与上面一致。
      拨号的时候绑定vlan 1101

      iptv内网绑定vlan 31,lan绑定vlan 33
      这样做理论上是没有问题的,但是我每次打开机顶盒都要重启路由器,不然就会像看幻灯片一样,抓包发现会有大量丢包,而且vlan 1103的tag标签时不时的会丢掉。vlan标签丢掉是造成丢包的一个原因,是不是所有原因还不清楚。基本上可以确定vlan标签在网桥中透传时出错了。还不确定是个例还是openwrt的通病。
    3. pon stick插到交换机上
      拓朴图

      这种方法我没有试,但可以绕过openwrt用交换机进行vlan透传,避免openwrt造成的丢包问题。

    注意:
    MTU正确设置也是很重要的,ppoe连接上一定要打开mss钳制,连接的mtu也要设置正确。
    vlan说明:1101是pppoe,1103是单拨iptv,50是组播,110是tr069,1102是voip,其中有用的是1101和1103。lan端口绑表表示untag口,否者就是tag口
    我在配置的过程中影响比较大的还是vlan和mtu,这两点没问题就能通。另外机顶盒对ipv6兼容性不是很好也是要注意的地方。
    有线和无线尽量不放在一个vlan或网段中,因为有线网络中的广播以及组播包会干扰无线网络。

    Views: 26

  • alpine/openwrt开启mdns

    alpine和openwrt这两个系统用的都是uclibc,但是uclibc没有提供对mdns的任何支持,所以在基于uclibc的系统上使用mdns是一件很困难的事。alpine提供的方案是用avahi2dns把mdns请求转换为普通的dns请求。

    alpine开启mdns

    • mdns服务端支持
      编辑/etc/apk/repositories,添加
      https://mirrors.hetao.me/alpine/edge/testing

      然后执行命令

      apk add avahi
      rc-update add avahi-daemon
      rc-service avahi-daemon start
      
    • mdns客户端支持
      apk add avahi2dns
      rc-update add avahi2dns
      rc-service avahi2dns start
      apk add unbound
      创建/etc/unbound/unbound.conf.d/avahi-local.conf:

       forward-zone:
             name: "local"
             forward-addr: 127.0.0.1@5354
       server:
             do-not-query-localhost: no
             domain-insecure: "local"
      

      编辑/etc/unbound/unbound.conf,添加下面一行
      include: "/etc/unbound/unbound.conf.d/*.conf"
      编辑/etc/unbound/unbound.conf.d/resolvconf.conf

      forward-zone:
              name: "."
              forward-addr: 223.5.5.5
      

      unbound默认是开启dnssec的,如果用自己的dns server需要关闭dnssec.

      编辑/etc/resolv.conf

      nameserver 127.0.0.1
      

      启动unbound服务

      rc-update add unbound
      rc-service unbound start
      

      解析结果:

    openwrt

    • 服务端支持
      参考:https://openwrt.org/docs/guide-developer/mdns
    • 客户端支持
      参考:https://blog.csdn.net/qq_38026359/article/details/121320404
      关于客户端支持也可以采用avahi2dns的方案,不过目前openwrt还没有集成这个包。

    参考:
    https://wiki.alpinelinux.org/wiki/MDNS

    Views: 3

  • openwrt流量监控

    opkg install luci-app-nlbwmon luci-i18n-nlbwmon-zh-cn nlbwmon

    参考:
    https://github.com/destan19/OpenAppFilter
    https://github.com/jow-/nlbwmon/tree/master

    Views: 1

  • automake交叉编译

    export PATH=$PATH:/opt/toolchains/taowrt-toolchain-1.0.4-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64/toolchain-aarch64_cortex-a53_gcc-13.3.0_musl/bin/
    ./configure --build=aarch64-openwrt-linux
    make
    

    Views: 1

  • openwrt编译时集成wireguard功能

    如果只内置luci-proto-wireguard,会出现cannot find dependency kmod-crypto-kpp for kmod-crypto-lib-curve25519错误,需要把kmod-crypto-kpp模块也内置

    这个编译错误还是个老问题,参考这里:
    https://forum.openwrt.org/t/build-fails-with-multiple-errors/124382

    Views: 2

  • openwrt升级后重新安装软件包

    openwrt升级后原来安装的软件包就没有了,用这条命令可以重新安装所有丢失的软件包(前提是升级前对软件列表进行了备份)
    opkg update && opkg list-installed | cut -f 1 -d ' '| sort -u > /tmp/currentpkg && cat /etc/backup/installed_packages.txt | cut -f 1 | sort -u > /tmp/oldpkg && grep -v -F -x -f /tmp/currentpkg /tmp/oldpkg > /tmp/inst && opkg install $(cat /tmp/inst | sort -u) && rm /tmp/currentpkg /tmp/oldpkg /tmp/inst

    Views: 1

  • openwrt编译所有模块

    • 下载加速
      1. gitea.hetao.me是我自用的git服务器,用于同步境外的git仓库以加速本地访问,下面的git拉取都是从这个域名。
      2. 按这里的方法配置下载加速

        openwrt编译时加速依赖下载

    • 下载openwrt代码

      git clone https://gitea.hetao.me/openwrt/openwrt
      cd openwrt
      
    • 下载配置文件
      curl https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/config.buildinfo --output .config
      curl https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/feeds.buildinfo --output feeds.conf
      

      config.buildinfo配置中已经包含了

      CONFIG_ALL=y
      CONFIG_ALL_KMODS=y
      CONFIG_ALL_NONSHARED=y
      

      对feeds.config中的域名替换为gitea.hetao.me,替换后如下

      src-git packages https://gitea.hetao.me/feed/packages.git
      src-git luci https://gitea.hetao.me/project/luci.git
      src-git routing https://gitea.hetao.me/feed/routing.git
      src-git telephony https://gitea.hetao.me/feed/telephony.git
      
    • 更新feeds
      ./scripts/feeds update -a
      ./scripts/feeds install -a
      
    • 编译配置

      对编译配置进行自定义修改,主要是编译目标板子改为bpi r3,集成luci和中文,开启ccache,修改opkg源和固件版本号,这是我用的配置

      http://openwrt.hetao.me/snapshots/targets/mediatek/filogic/config.buildinfo

      make menuconfig
      sed -i '/is not set/d' .config
      make defconfig
      
    • 开始编译

      IGNORE_ERRORS=1 make -j 70

    • 把编译后的镜像和ipk包复制到web服务器

      rsync -avP bin/* root@openwrt.hetao.me:/opt/web/data/nginx/www/openwrt/snapshots/
      这样就可以通过 https://openwrt.hetao.me/snapshots/ 访问openwrt源了

    Views: 14

  • openwrt编译时加速依赖下载

    openwrt编译时加速依赖下载

    • 环境变量方式
    export PIP_INDEX_URL=https://mirrors.hetao.me/pypi/simple
    export npm_config_registry=https://mirrors.hetao.me/npm-registry
    export RUSTUP_DIST_SERVER=https://mirror.sjtu.edu.cn/rust-static
    export RUSTUP_UPDATE_ROOT=https://mirror.sjtu.edu.cn/rust-static/rustup
    export GO111MODULE=on
    export GOPROXY=https://goproxy.cn
    export CARGO_REGISTRIES_MIRROR_INDEX=sparse+https://mirrors.sjtug.sjtu.edu.cn/crates.io-index/
    export CARGO_REGISTRY_DEFAULT="mirror"
    
    • 配置文件方式
    echo registry=https://mirrors.hetao.me/npm-registry > HOME/.npmrc
    mkdir -pHOME/.config/pip
    cat << EOF > HOME/.config/pip/pip.conf
    [global]
    index-url = https://mirrors.hetao.me/pypi/simple
    format = columns
    EOF
    mkdir -vpHOME/.cargo
    cat << EOF > HOME/.cargo/env
    RUSTUP_DIST_SERVER=https://mirror.sjtu.edu.cn/rust-static
    RUSTUP_UPDATE_ROOT=https://mirror.sjtu.edu.cn/rust-static/rustup
    EOF
    cat << EOF>HOME/.cargo/config
    [source]
    [source.mirror]
    registry = "sparse+https://mirrors.sjtug.sjtu.edu.cn/crates.io-index/"
    
    [source.crates-io]
    replace-with = "mirror"
    EOF
    
    • 其它无法使用镜像加速的则使用代理
    export http_proxy=http://192.168.33.6:3128
    export https_proxy=http://192.168.33.6:3128
    export no_proxy=127.0.0.1,172.16.0.0/12,192.168.0.0/16,.cn,.hetao.me,localhost,local,.local
    

    Views: 2

  • immortalwrt修改源

    编辑/etc/opkg/distfeeds.conf,替换内容如下

    src/gz immortalwrt_core https://mirrors.hetao.me/immortalwrt/releases/23.05.1/targets/armsr/armv8/packages
    src/gz immortalwrt_base https://mirrors.hetao.me/immortalwrt/releases/23.05.1/packages/aarch64_generic/base
    src/gz immortalwrt_luci https://mirrors.hetao.me/immortalwrt/releases/23.05.1/packages/aarch64_generic/luci
    src/gz immortalwrt_packages https://mirrors.hetao.me/immortalwrt/releases/23.05.1/packages/aarch64_generic/packages
    src/gz immortalwrt_routing https://mirrors.hetao.me/immortalwrt/releases/23.05.1/packages/aarch64_generic/routing
    src/gz immortalwrt_telephony https://mirrors.hetao.me/immortalwrt/releases/23.05.1/packages/aarch64_generic/telephony
    

    Views: 156

  • openwrt升级所有包

    1. shell脚本
      opkg list-upgradable | cut -f 1 -d ' ' | xargs -r opkg upgrade
    2. 安装第三方工具
      curl -L 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -o "/usr/sbin/opkg-upgrade" && chmod 755 "/usr/sbin/opkg-upgrade"
      然后执行
      opkg-upgrade

    Views: 79