OpenWrt Tips: Difference between revisions

No edit summary
No edit summary
 
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
*AppleTV 4K の Thread 問題
なぜか RA が AppleTV から来る。いろいろ調べたら HomeKit の Thread Matter が IPv6 router (Thread Border Router) の挙動をしているらしい。HomeKit hub としては使いたいのでいろいろ調査中...とりあえず IPv4 subnet をこしらえて隔離した。AirPlay もつつがなくうごくようにできた。IPv4 で構成しているのにもかかわらず mDNS は v6 の LLA でガンガンくる...
AirPlay やら rimote app やらの機能を有効にするためには、けっこうなレンジのポートあける必要があった。今回の隔離は ICMPv6 RA を飛ばさなくすることなので、穴あきまくりもオッケーw
*dumb AP の GL-MT6000 2台
WED + bridger を使用していると roaming する際に不具合があり、今は WEBとbridger は disable にしている。WEDが無くとも素晴らしく高速で満足w
*SQM
効きますねw。GL-MT2500A (aarch64 2CPU)で十分なパフォーマンスです。
https://www.waveform.com/tools/bufferbloat
A+ もらいましたw
*MAP-E フレッツ光 ひかり電話無し
以下のサイトの情報が役に立った。
https://github.com/fakemanhk/openwrt-jp-ipoe?utm_source=pocket_saves
https://forum.ficusonline.com/t/topic/498?utm_source=pocket_saves
これで IPv4 はつつがなく使えるようになった。
*フレッツ光 ひかり電話無し lan側に GUA が来ない
私のルータ(GL-MT2500A)はイーサーネットがWAN側1ポート、LAN側1ポートなので、br-lan を使う必要が無いので、そのように設定すると、lan側のGUAが降ってこない。
lanポートにGUAが無くても差し支えはないが、あった方が便利なので、いろいろ試行錯誤した結果、lan インターフェースに option ip6assign '64' を設定する事により GUA が降ってきた。
*フレッツ光 ひかり電話無し
IPv6 と本格的に関わった事が無かったので、いろいろ勉強中。
ひかり電話無しのパターンはルータはIPv6のL2装置として設定する(ルータじゃないよねw)。しかし境界の装置なので、パススルーは嫌なので proxy 的な挙動をしなくてはいけない。
OpenWrtでは IPv6 Relay というパターンの設定がある。(MAP-Eに関するいろいろは別のはなし)
単純な IPv6 only のネットワーク構築でもいろいろ不思議な挙動があり、以下を見つけるまでけっこう試行錯誤した。
このパターンはいろいろ落とし穴があるね。(IPv6 relay モード)
私もこのパターンでいろいろ迷った。
https://github.com/openwrt/openwrt/issues/9881
今は、ルータが起動したあと、WAN6 の GUA に すべての AP から ping6 を打つようにスクリプトを仕込んで対処している。
あと気になるところで、どうもルーティングテーブルが30分ほどで消えるっぽい(まだ調べて無い)ので、cron で wan側のGUAにpingして様子見中。
ブリッジデバイスの設定でなんとかなるかもしれず。静的ルーティングをuplinkのport指定で書くとか...
*MacOS DHCPv6 & ULA
どうも OpenWrt の DHCPv6 relay の実装と相性が悪いらしい。ULA prefix (ula_prefix) を削除すること。
https://forum.openwrt.org/t/how-to-send-icmp6-neighbor-solicitation-with-a-link-local-source-address/53220
*GL-MT6000 mediatek firmware
https://github.com/rany2/openwrt
ここを参考に MTK GPL ソースをいろいろホゲって、すこし安定したようだ。
OpenWrt main snapshot:
<syntaxhighlight lang="text" enclose="div">
[  14.210931] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20221012175005
[  14.220308] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3
[  16.831897] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20221012174648a
[  16.831897]
[  16.934523] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20221012174725
[  17.018891] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20221012174937
</syntaxhighlight>
MTK GPL:
<syntaxhighlight lang="text" enclose="div">
[  13.247287] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20231024160448
[  13.256586] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3
[  15.828346] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20231024160251a
[  15.828346]
[  15.864094] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20231024160309
[  15.906781] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20231024160432
</syntaxhighlight>
*WDS
昔は、Wi-Fi ブリッジ(リピーター、エクステンダー)を構成する場合は、relayd を使ってたのだが、今は WDS という機能をつかうのが普通らしい。(WDSはレイヤー2レベルでブリッジを構成する)
最初はなじみのある relayd を使ってみたのだが、IPv6 関連で微妙な振る舞いがあって、ではということで WDS 使ってみたがむちゃくちゃサックリとブリッジが構成できた。IPv6 関連もなじみの設定であっさりと設定。かつ通信も安定している。
もうすこし遊んだら 802.11s 構成にもチャレンジしてみよう。
*802.11r不具合
MacBookAirでつながんないと悩んでいたが、そうだったのか
<syntaxhighlight lang="text" enclose="div">
Alright... So I've now verified that having 802.11k, 802.11v and 802.11w enabled does not influence the situation. Having them enabled, I've confirmed that a combination of wireless.default_radio0.encryption='sae-mixed' + wireless.default_radio0.ieee80211r='1' causes problems. Changing any of them makes everything work.
</syntaxhighlight>
https://forum.openwrt.org/t/wpa2-wpa3-mixed-mode-connectivity-issues-with-ios-15-2/117110/7
APをmix-modeからWPA3-SAE固定に変更したばあい、Appleのクライアントはそのままつながらない。再度明示的に接続しに行くと、モードが変更された旨の警告が出る。もっと分かるようにさっさと警告を出せよw
*GL-MT6000メモ
openwrt main snapshot kernel 6.1 と bridger(+追加パッチ) で超安定して動いている。WED も完璧。2.5GbE のハブ買うか、もう一台 GL-MT6000 買うかw
(もう一台買ったw 802.11r.k.v で遊び中w)(あとは SQM 専用機のエッジルータもそろえたw)
*OOM系
とりあえず安全のための設定をするスクリプト
<syntaxhighlight lang="bash" enclose="div">
#!/bin/sh
 
PROGS='procd ubusd askfirst urngd logd rpcd netifd dropbear'   
 
for prog in $PROGS; do
        PIDS=`pgrep $prog`
        for pid in $PIDS; do
                # oom_adj is deprecated, use oom_score_adj instead.         
                echo -17 > /proc/$pid/oom_adj
                echo -1000 > /proc/$pid/oom_score_adj
        done
done
</syntaxhighlight>
*GL-MT6000メモ
*GL-MT6000メモ
追加でinstallしたものメモ
追加でinstallしたものメモ
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
opkg update
opkg update
opkg install luci-i18n-base-ja
opkg install e2fsprogs dosfstools fdisk rsync badblocks tune2fs
opkg install e2fsprogs dosfstools fdisk rsync badblocks tune2fs
opkg install unzip
opkg install unzip
opkg install screen
opkg install screen
opkg install coreutils-ls coreutils-stty
opkg install dropbearconvert
opkg install dropbearconvert
opkg install avahi-utils avahi-daemon-service-ssh
opkg install avahi-utils avahi-daemon-service-ssh
Line 12: Line 129:
opkg install diffutils
opkg install diffutils
opkg install mg
opkg install mg
opkg install coreutils-ls coreutils-stty
opkg install procps-ng procps-ng-ps procps-ng-w procps-ng-vmstat procps-ng-watch
opkg install procps-ng procps-ng-ps procps-ng-w procps-ng-vmstat procps-ng-watch
opkg install sysstat irqbalance lm-sensors
opkg install sysstat irqbalance lm-sensors
opkg install htop
opkg install htop lsblk usbutils
</syntaxhighlight>
</syntaxhighlight>



Latest revision as of 14:46, 17 May 2024

  • AppleTV 4K の Thread 問題

なぜか RA が AppleTV から来る。いろいろ調べたら HomeKit の Thread Matter が IPv6 router (Thread Border Router) の挙動をしているらしい。HomeKit hub としては使いたいのでいろいろ調査中...とりあえず IPv4 subnet をこしらえて隔離した。AirPlay もつつがなくうごくようにできた。IPv4 で構成しているのにもかかわらず mDNS は v6 の LLA でガンガンくる...

AirPlay やら rimote app やらの機能を有効にするためには、けっこうなレンジのポートあける必要があった。今回の隔離は ICMPv6 RA を飛ばさなくすることなので、穴あきまくりもオッケーw

  • dumb AP の GL-MT6000 2台

WED + bridger を使用していると roaming する際に不具合があり、今は WEBとbridger は disable にしている。WEDが無くとも素晴らしく高速で満足w

  • SQM

効きますねw。GL-MT2500A (aarch64 2CPU)で十分なパフォーマンスです。

https://www.waveform.com/tools/bufferbloat

A+ もらいましたw

  • MAP-E フレッツ光 ひかり電話無し

以下のサイトの情報が役に立った。

https://github.com/fakemanhk/openwrt-jp-ipoe?utm_source=pocket_saves
https://forum.ficusonline.com/t/topic/498?utm_source=pocket_saves

これで IPv4 はつつがなく使えるようになった。

  • フレッツ光 ひかり電話無し lan側に GUA が来ない

私のルータ(GL-MT2500A)はイーサーネットがWAN側1ポート、LAN側1ポートなので、br-lan を使う必要が無いので、そのように設定すると、lan側のGUAが降ってこない。 lanポートにGUAが無くても差し支えはないが、あった方が便利なので、いろいろ試行錯誤した結果、lan インターフェースに option ip6assign '64' を設定する事により GUA が降ってきた。

  • フレッツ光 ひかり電話無し

IPv6 と本格的に関わった事が無かったので、いろいろ勉強中。 ひかり電話無しのパターンはルータはIPv6のL2装置として設定する(ルータじゃないよねw)。しかし境界の装置なので、パススルーは嫌なので proxy 的な挙動をしなくてはいけない。 OpenWrtでは IPv6 Relay というパターンの設定がある。(MAP-Eに関するいろいろは別のはなし) 単純な IPv6 only のネットワーク構築でもいろいろ不思議な挙動があり、以下を見つけるまでけっこう試行錯誤した。

このパターンはいろいろ落とし穴があるね。(IPv6 relay モード)

私もこのパターンでいろいろ迷った。

https://github.com/openwrt/openwrt/issues/9881

今は、ルータが起動したあと、WAN6 の GUA に すべての AP から ping6 を打つようにスクリプトを仕込んで対処している。

あと気になるところで、どうもルーティングテーブルが30分ほどで消えるっぽい(まだ調べて無い)ので、cron で wan側のGUAにpingして様子見中。

ブリッジデバイスの設定でなんとかなるかもしれず。静的ルーティングをuplinkのport指定で書くとか...

  • MacOS DHCPv6 & ULA

どうも OpenWrt の DHCPv6 relay の実装と相性が悪いらしい。ULA prefix (ula_prefix) を削除すること。

https://forum.openwrt.org/t/how-to-send-icmp6-neighbor-solicitation-with-a-link-local-source-address/53220
  • GL-MT6000 mediatek firmware
https://github.com/rany2/openwrt

ここを参考に MTK GPL ソースをいろいろホゲって、すこし安定したようだ。

OpenWrt main snapshot:

[   14.210931] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20221012175005
[   14.220308] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3
[   16.831897] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20221012174648a
[   16.831897] 
[   16.934523] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20221012174725
[   17.018891] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20221012174937

MTK GPL:

[   13.247287] platform 15010000.wed: MTK WED WO Firmware Version: DEV_000000, Build Time: 20231024160448
[   13.256586] platform 15010000.wed: MTK WED WO Chip ID 00 Region 3
[   15.828346] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20231024160251a
[   15.828346] 
[   15.864094] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20231024160309
[   15.906781] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20231024160432
  • WDS

昔は、Wi-Fi ブリッジ(リピーター、エクステンダー)を構成する場合は、relayd を使ってたのだが、今は WDS という機能をつかうのが普通らしい。(WDSはレイヤー2レベルでブリッジを構成する)

最初はなじみのある relayd を使ってみたのだが、IPv6 関連で微妙な振る舞いがあって、ではということで WDS 使ってみたがむちゃくちゃサックリとブリッジが構成できた。IPv6 関連もなじみの設定であっさりと設定。かつ通信も安定している。

もうすこし遊んだら 802.11s 構成にもチャレンジしてみよう。

  • 802.11r不具合

MacBookAirでつながんないと悩んでいたが、そうだったのか

Alright... So I've now verified that having 802.11k, 802.11v and 802.11w enabled does not influence the situation. Having them enabled, I've confirmed that a combination of wireless.default_radio0.encryption='sae-mixed' + wireless.default_radio0.ieee80211r='1' causes problems. Changing any of them makes everything work.
https://forum.openwrt.org/t/wpa2-wpa3-mixed-mode-connectivity-issues-with-ios-15-2/117110/7

APをmix-modeからWPA3-SAE固定に変更したばあい、Appleのクライアントはそのままつながらない。再度明示的に接続しに行くと、モードが変更された旨の警告が出る。もっと分かるようにさっさと警告を出せよw

  • GL-MT6000メモ

openwrt main snapshot kernel 6.1 と bridger(+追加パッチ) で超安定して動いている。WED も完璧。2.5GbE のハブ買うか、もう一台 GL-MT6000 買うかw

(もう一台買ったw 802.11r.k.v で遊び中w)(あとは SQM 専用機のエッジルータもそろえたw)

  • OOM系

とりあえず安全のための設定をするスクリプト

#!/bin/sh
  
PROGS='procd ubusd askfirst urngd logd rpcd netifd dropbear'     
  
for prog in $PROGS; do
        PIDS=`pgrep $prog`
        for pid in $PIDS; do
                # oom_adj is deprecated, use oom_score_adj instead.          
                echo -17 > /proc/$pid/oom_adj
                echo -1000 > /proc/$pid/oom_score_adj
        done
done
  • GL-MT6000メモ

追加でinstallしたものメモ

opkg update
opkg install luci-i18n-base-ja
opkg install e2fsprogs dosfstools fdisk rsync badblocks tune2fs
opkg install unzip
opkg install screen
opkg install dropbearconvert
opkg install avahi-utils avahi-daemon-service-ssh
opkg install rsync
opkg install diffutils
opkg install mg
opkg install coreutils-ls coreutils-stty
opkg install procps-ng procps-ng-ps procps-ng-w procps-ng-vmstat procps-ng-watch
opkg install sysstat irqbalance lm-sensors
opkg install htop lsblk usbutils
  • パッケージが何故か更新されない問題

新しいバージョンがビルドされたのは確認しているが、ターゲットイメージ内の該当パッケージが更新されていない。いろいろ調査して、root.orig-ARCH が古いままであるのがわかった。 なぜ古いままなのか。./bin/package/ARCH にある opkg のパッケージに古いのが残っていた(バージョン違いが残っていた)。./bin/package/ARCH を消すと解消した。 毎回消すのも効率が悪いので、時々消すwことにした。

  • cmake で libbsd 勝手に使う問題
-DCMAKE_DISABLE_FIND_BSD=ON

諸注意

Note that CMAKE_DISABLE_FIND_XXXXX works for dependency packages that are discovered by CMake using find_package. But, libbsd searching is not done using find_package but find_library, so the -DCMAKE_DISABLE_FIND_BSD=ON is a no-op.
  • Build OpenWrt on FreeBSD

ports の準備

/usr/ports/shells/bash
/usr/ports/sysutils/coreutils
/usr/ports/devel/ncurses
/usr/ports/devel/subversion
/usr/ports/devel/git
/usr/ports/ftp/wget
/usr/ports/archivers/unzip 
/usr/ports/lang/gcc
/usr/ports/devel/gmake
/usr/ports/misc/getopt
/usr/ports/devel/patch
/usr/ports/archivers/gtar
/usr/ports/misc/findutils
/usr/ports/lang/gawk           (/usr/ports/japanese/gawk は違う)
/usr/ports/textproc/gsed

#/usr/ports/sysutils/e2fsprogs
#/usr/ports/sysutils/squashfs-tools
#/usr/ports/devel/elfutils

OpenWrt ビルドのステップでほかのパッケージも指摘されたらインストールする。

OpenWrtは root 権限ではない一般ユーザでビルドする事を要請されている。また PATH に ASCII 文字以外は使わない。

ln -s /usr/local/bin/bash /bin/bash
mkdir /usr/local/openwrt
cd /usr/local/openwrt
ln -s /usr/local/bin/gawk awk
ln -s /usr/local/bin/gfind find
ln -s /usr/local/bin/getopt getopt
ln -s /usr/local/bin/gmake make
ln -s /usr/local/bin/gpatch patch
ln -s /usr/local/bin/gnustat stat
ln -s /usr/local/bin/gtar tar
ln -s /usr/local/bin/gxargs xargs
ln -s /usr/local/bin/gsed sed

したり

OpenWrt をビルドする専用のユーザを作り、login shell を bash にして

export PATH="/usr/local/openwrt:/usr/local/sbin:/usr/local/bin:$PATH"

export CC=gcc
export CXX=g++
export HOSTCC=gcc
export HOSTCXX=g++

# /usr/local/openwrt を整備して PATH 変えたらこれは不要
alias awk='/usr/local/bin/gawk'
alias find='/usr/local/bin/gfind'
alias getopt='/usr/local/bin/getopt'
alias make='/usr/local/bin/gmake'
alias patch='/usr/local/bin/gpatch'
alias stat='/usr/local/bin/gnustat'
alias tar='/usr/local/bin/gtar'
alias xargs='/usr/local/bin/gxargs'
alias sed='/usr/local/bin/gsed'

tools のビルドで野良パッチを当てつつ頑張ってみた。e2fsprogs, mtd-utils, elfutils は tools/Makefile から除く

ports の pkgconfig は .pc ファイルを libdata に入れるのでそれの対応が必要な場合(util-linux)も有る。

  • usb上のデバイスを強制リセット
lsusb -t
echo -n '{Bus}-{Port}' > /sys/bus/usb/drivers/usb/unbind
echo -n '{Bus}-{Port}' > /sys/bus/usb/drivers/usb/bind
echo -n '1-1' > /sys/bus/usb/drivers/usb/unbind
echo -n '1-1' > /sys/bus/usb/drivers/usb/bind