Pi-holeへのブロックリストの追加

先日入れたPi-holeでのブロックリストの追加を行います。
実施はPi-holeを導入したVPSマシン。SSHで入り、まずはpipをインストール。

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python3
$ pip -V
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

pihole5-list-toolを使えば手軽にリストを増やすことができるとのことなので、pipにてインストールして実行。

$ sudo pip install pihole5-list-tool --upgrade
$ sudo pihole5-list-tool


Enterを押していくと、ブロックリストの登録まで行きます。
リストが多すぎても運用に支障をきたす(意図しないものもブロックしてしまう)ので、真ん中にある一番ゆるいTicked listsを選択し、Enter。


30リストを入れるそうなので、Yesを選択し、入れてもらいます。

というわけでリストを入れる前と後で比較すると、30万ほどのブロックドメインが登録されました。
※すでに入っているドメインに関してはスキップされる仕様らしい。

・適用前

・適用後

定期的にやるといいかもしれませんね。

OpenMPTCProuter(で使っているVPS)にPi-holeをインストールして広告ブロックを施す

※2022/9/30追記※
どうもVPSにpi-holeを入れるとOpenMPTCProuterのステータスが以下のようになり、VPSが正常に認識?されなくなるらしい。

グラフによる回線使用状況を確認する限り、2回線をちゃんと利用しているようだが、管理画面がこの状態というのはなんとも気持ちが悪い。

$ pihole disable

で停止しても変化なし。

$ pihole uninstall

でpi-holeをアンインストールしても変化なしです(一応試した)。

pi-hole自体は有用なので、とりあえず様子見。(必要があれば別のサーバで運用も視野に入れたい)
※追記終わり※


Pi-hole(パイホール)はAdBlocking、要するにサイト広告をブロックしてくれるアプリケーションとのこと。(DNSキャッシュとかもできるらしいけど)
docs.pi-hole.net
 
これのいいところは、ネットワーク配下のクライアントすべての通信に適用されるため、
スマホやWindowsPC等、個別にAdBlockアプリを入れてるのが不要になるという点です。
元々OpenMPTCProuterとは全く関係ない代物ですが、OpenMPTCProuterをルータとして動かすと必然的にPi-holeを動かしているVPSも通過するため、自然に通信上で適用がなされる(という仕組みになるらしい)。

なお、Piと名前がついているものの、ラズパイ以外のサーバに普通に入るとのこと。
あとYoutubeの動画広告を回避は難しいらしいです。
  
GitHubにインストール方法が書いてあったため、試しにインストールしてみます。
github.com

VPSSSHでログインし、以下のコマンドを実行します。

$ wget -O - http://www.openmptcprouter.com/server/omr-pihole.sh | sudo sh

キャプチャ忘れてたので、あとからコピペしたログで…

 qqqlqqqqqqqqqqqqqqqqqqqqqqqqqStatic IP Neededqqqqqqqqqqqqqqqqqqqqqqqqqqqkqqqqq
    x                                                                    x
    x                                                                    x
    x The Pi-hole is a SERVER so it needs a STATIC IP ADDRESS to         x
    x function properly.                                                 x
    x                                                                    x
    x IMPORTANT: If you have not already done so, you must ensure that   x
    x this device has a static IP.                                       x
    x                                                                    x
    x Depending on your operating system, there are many ways to achieve x
    x this, through DHCP reservation, or by manually assigning one.      x
    x                                                                    x
    x Please continue when the static addressing has been configured.    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                   <Continue>          <  Exit  >                   x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Continueを押下
 

    lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
    x Choose An Interface (press space to toggle selection)              x
    x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
    x x                  (*) ens3          available                   x x
    x x                  ( ) mlvpn0        available                   x x
    x x                  ( ) gt-udp-tun0   available                   x x
    x x                  ( ) dsvpn0        available                   x x
    x x                  ( ) omr-bonding   available                   x x
    x x                  ( ) ovpnbonding3  available                   x x
    x x                  ( ) ovpnbonding1  available                   x x
    x x                  ( ) ovpnbonding4  available                   x x
    x x                  ( ) ovpnbonding5  available                   x x
    x x                  ( ) ovpnbonding6  available                   x x
    x x                  ( ) ovpnbonding2  available                   x x
    x x                  ( ) ovpnbonding7  available                   x x
    x x                  ( ) ovpnbonding8  available                   x x
    x mqqqqqqqqqqqqqqqqqqqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqq76%qqqqqj x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                   <Select>          < Exit >                       x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

NICの指定はens3のままでいいのでSelectを押下
 

    lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
    x Select Upstream DNS Provider. To use your own, select Custom.      x
    x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
    x x                Google (ECS, DNSSEC)                            x x
    x x                OpenDNS (ECS, DNSSEC)                           x x
    x x                Level3                                          x x
    x x                Comodo                                          x x
    x x                DNS.WATCH (DNSSEC)                              x x
    x x                Quad9 (filtered, DNSSEC)                        x x
    x x                Quad9 (unfiltered, no DNSSEC)                   x x
    x mqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq70%qqqqqj x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                   <  OK  >          < Exit >                       x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

DNSは何でもいいけど、無難にGoogleあたりを選択してOK
 

 qqqlqqqqqqqqqqqqqqqqqqqqqqqqqqqqBlocklistsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkqqqqq
    x                                                                    x
    x Pi-hole relies on third party lists in order to block ads.         x
    x                                                                    x
    x You can use the suggestion below, and/or add your own after        x
    x installation.                                                      x
    x                                                                    x
    x Select 'Yes' to include:                                           x
    x                                                                    x
    x StevenBlack's Unified Hosts List                                   x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                     < Yes >           < No  >                      x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Yesを選択
 

 qqqlqqqqqqqqqqqqqqqqqqqqqqqAdmin Web Interfaceqqqqqqqqqqqqqqqqqqqqqqqqqqkqqqqq
    x                                                                    x
    x                                                                    x
    x Do you want to install the Admin Web Interface?                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                     < Yes >           < No  >                      x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Yesを選択

 qqqlqqqqqqqqqqqqqqqqqqqqqqqqqqqqWeb Serverqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkqqqqq
    x                                                                    x
    x                                                                    x
    x A web server is required for the Admin Web Interface.              x
    x                                                                    x
    x Do you want to install lighttpd and the required PHP modules?      x
    x                                                                    x
    x NB: If you disable this, and, do not have an existing web server   x
    x and required PHP modules (sqlite3 xml intl json) installed, the    x
    x web interface will not function. Additionally the web server user  x
    x needs to be member of the "pihole" group for full functionality.   x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                     < Yes >           < No  >                      x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Yesを選択

qqqlqqqqqqqqqqqqqqqqqqqqqqqqqqEnable Loggingqqqqqqqqqqqqqqqqqqqqqqqqqqqqkqqqqq
    x                                                                    x
    x                                                                    x
    x Would you like to enable query logging?                            x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                     < Yes >           < No  >                      x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Yesを選択
 

    lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
    x Select a privacy mode for FTL.                                     x
    x https://docs.pi-hole.net/ftldns/privacylevels/                     x
    x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
    x x                (*) 0  Show everything                          x x
    x x                ( ) 1  Hide domains                             x x
    x x                ( ) 2  Hide domains and clients                 x x
    x x                ( ) 3  Anonymous mode                           x x
    x x                                                                x x
    x x                                                                x x
    x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                   <Continue>          <  Exit  >                   x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

設定を変えずにContinueを選択
 

    lqqqqqqqqqqqqqqqqqqqqqqInstallation Complete!qqqqqqqqqqqqqqqqqqqqqqqqk
    x Configure your devices to use the Pi-hole as their DNS server      x
    x using:                                                             x
    x                                                                    x
    x IPv4: XXX.XXX.XXX.XXX                                               x
    x IPv6: Not Configured                                               x
    x If you have not done so already, the above IP should be set to     x
    x static.                                                            x
    x View the web interface at http://pi.hole/admin or                  x
    x http://XXX.XXX.XXX.XXX/admin                                        x
    x                                                                    x
    x Your Admin Webpage login password is XXXXXXXXXXXX                     x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    x                                                                    x
    tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
    x                             <  OK  >                               x
    mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

OKを押下
 
 
インストールが完了後、OpenMPTCProuterに接続されている作業用PCから以下のアドレスにアクセスします。
下記URLは外部の別PCからはもちろん、VPSIPアドレスを指定したhttp通信もダメだったので、必ずOpenMPTCProuterの配下PCで以下のURLでなければいけないようです。(そこら辺を把握してなくて時間かかった)

http://pi.hole/admin

ログインが完了すると以下のような画面になります。
現状はBlockリスト等は何も弄ってないため、それはまた後日やります。
ボチボチ弾いてはいる模様。

 
Pi-hole適用前

Pi-hole適用後

  
なお、初期パスワードは覚えづらいので、VPSSSHで入って以下のコマンドで変更可能です。

$ pihole -a -p
Enter New Password (Blank for no password):
Confirm Password:
[?] New password set

LIVA ZにOpenMPTCProuterをセットアップし、回線を束ねて高速化できるかを試す

※この記事はボチボチ進めながらメモっぽくまとめていくので随時更新します。もしかしたら途中で詰まって断念するかもしれない
→一応完了。


■参考サイト
貧弱なインターネット回線をたくさん束ねて強くできる「OpenMPTCProuter」レビュー - GIGAZINE
OpenMPTCProuterで複数インターネット回線を集約して接続帯域を増加する - Qiita
OpenMPTCProuter でネット接続をタバタバして(束ねて)みる|Takumin|note

 

1.長い前置き

住んでいるアパートが数か月前から無料でアパートWiFi(BUFFALOのサービスらしい)なるものを提供し始め、毎月6000円払ってるSoftbank光も契約更新時期なので、解約してそちらを利用しようかと思ってます。
 
で、回線速度的には大本は1Gbpsで、比較的空いてるときは上下ともに40Mぐらいは出るよう(ping値も7msぐらいでなかなか)なので、それでもまぁそこそこいいんですが、2.4/5GHz帯のアクセスポイントが複数用意されており、これはもしや複数のネットワーク回線を束ねて高速化って奴ができるのではないか…?ということで挑戦しようと思った次第。(前回USB無線LANドングルを買ったのはこれが理由)
いずれにせよ、各端末でアパートWiFiを掴んでしまうとローカルネットワーク間の通信がままならないため、(また)ルータを自作してNAT設定によってWANを(この場合はアパートWiFiに)一本化を行う必要は出てくる。
 
ボンディング(チーミング)がそれに当たるかなということで、この技術はここにきて初めて学びましたが、この間調べた「nmtui」コマンドで設定することが可能な模様。ただこのコマンドだと無線インタフェースの選択はできないようだし、そもそもここで設定できるボンディングは負荷分散や冗長化といったロードバランサとしての意味合いが強い。
 
やりたいことは複数回線を束ねた高速化なわけで、そういえばと、過去にGIGAZINEで取り上げたSwitchboardというものがあったのは記憶にあり、これが使えないかと考えました。
gigazine.net
 
どうやら回線の統括役となるVPNサーバを設ける仕組みなようで、これ自体はサービスとしては終了。代わりに現在はSpeedifyという名前でクラウドVPNサービスとして提供されているらしい。これがなかなか月額料金を取るようで、いやOSSがあるのではと思い、検索で探し出したのが「OpenMPTCProuter」です。
gigazine.net
今回は、LIVA ZにOpenMPTCProuterを入れ、かつ仕組み的にVPSも必要になるため、そちらも用意して実現していきたい。
 

2.OpenMPTCProuterのイメージファイル取得とインストール

イメージディスクは以下のサイトから取得。
www.openmptcprouter.com

LIVA Zは64bit機なので、x86-64 (64-bits)欄のext4 image (EFI)のものをDLする。具体的には以下のイメージファイル。
openmptcprouter-v0.59.1-5.4-r0+16594-ce92de8c8c-x86-64-generic-ext4-combined-efi.img.gz

これを解凍ソフトで解凍し、rufus等でUSBメモリなりSDカードに書き込みます。
ただ、用意されているイメージディスクはインストーラが入っているわけではないので、DDコマンドでLIVA Zのディスクにコピーしないといけない。
(と、推測でやったけど、一応公式に書いてあった。
Router install · Ysurac/openmptcprouter Wiki · GitHub

というわけで、適当なLinuxディストリビューションのLIVE版を用意し、LIVA Zを一旦そのLIVE版で起動したうえで、DDコマンドを実行する必要があります。
つまり用意するものとしては、
Ubuntu等のLinuxのLIVE版が焼かれたUSBメモリまたはSDカード
②OpenMPTCProuterが焼かれたUSBメモリまたはSDカード
の2つ。

LIVA Zを①で起動し、

$ fdisk -l

のコマンドを叩いて、②で用意したデバイス名とLIVA Zのドライブのデバイス名を調べ、DDコマンドを実行する。ifが②のデバイス名、ofがLIVA Zのドライブのデバイス名。

$ sudo dd if=/dev/sfc of=/dev/mmcblk0 bs=16M

OpenMPTCProuter自体は600MB未満なので、コピーにそこまで時間はかかりません。
コピー完了後、一旦シャットダウンをして①、②を取り外し、再度起動してコンソールにズラズラとOS起動画面が出てきたら成功。
※追記
 DDコマンドを使ったけど、LIVE版Linuxに入っているディスクアプリケーションにて、イメージファイルを選択して書き込みができるようなので、そちらのやり方でもできるかも。
  
作業用PCとLIVA ZをLANケーブルで直接繋ぎ、作業用PC側のブラウザから「192.168.100.1」にアクセスすることでOpenMPTCProuterの管理画面に入ることが可能。(作業用PC側のIP設定は不要。OpenMPTCProuterのDHCP機能で自動的に割り振られる)

なお、最初はrootユーザにパスワードは設定されていない。ので、ブラウザの管理画面もそうだけど、LIVA Zのコンソールでもrootユーザでパスワードなしで入ることができます。

パスワードの変更は以下の順序で辿っていき、変更を行います。
[システム]→[管理]→[ルーターパスワード]タブ

3.VPSの設定

VPSを用意します。
以前はConohaVPSを使ってましたが、今回はさくらのVPS
OpenMPTCProuterではVPS用のシェルスクリプトが用意されていますが、Ubuntu用は20.04までなので、VPSのOSもUbuntu20.04でインストール。

GIGAGINEのインストール方法ではVPSのポート全開放という気でも触れたのかということを行ってましたが、どうやらここに書いてあるポートに合わせて自動的にiptablesが設定されるので問題なしということなんでしょう。たぶん。
なので、VPSのコンソールであらかじめ全ポート開放をしておきます。

シェルスクリプトは以下の手順に書いてある通りコマンドを実行します。
github.com

$ wget -O - https://www.openmptcprouter.com/server/ubuntu20.04-x86_64.sh | sudo sh
GitHubだと最後はshだけど、管理者権限でやったほうが都合がいいのでsudoで実行

/!\ You need to reboot to enable MPTCP, shadowsocks, glorytun and shorewall /!\
と出るので再起動します。
このメッセージの前段で、OpenMPTCProuterからのアクセス用の情報(暗号鍵情報等)が表示されています。
また、以下のファイルにも同様の情報が入っているため、メモし忘れた場合などはローカルにダウンロードしていつでも見られるようにしておきます。

$ sudo view /root/openmptcprouter_config.txt

$ sudo shutdown -r now

再起動後、SSHのポート番号が「65222」に変わります。(正確には再起動前から変わっているが、sshdを再起動するか、サーバそのものを再起動しない限りは影響はでない)
また、iptablesも「65222」でACCEPTが設定されます。というより、iptablesはかなり弄られるし、カーネルも変わるため、兼用ではなく専用VPSとして設けておいたほうがよさそうです。
変更となるポートは先に紹介したgithubで記載されています。

SSHクライアントでポート65222アクセスし、カーネルが変更されていればOK。

$ uname -a
Linux os3-320-49727 5.4.207-mptcp #1 SMP Sun Jul 24 14:39:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

VPS上でのファイアウォール設定はShoreline Firewall (Shorewall)を使ってるようなので、
以下のファイルで設定変更が可能な模様(おそらく)。

$ sudo vi /etc/shorewall/rules

Shorewallについては、ポートフォワーディングのデバッグ確認として以下の最後のほうに簡単に記載されていました。
github.com


4.OpenMPTCProuterの設定

LIVA Zの内蔵無線LANを使用するため、OpenMPTCProuterの管理画面に戻り、設定を行います。
(と言っても、ココらへんの設定はメモも取らずになんとなくで行ったので、ちょっと曖昧)
まずデバイスが認識されてそうでなければ、以下の順序でデバイスとして認識させます。
[ネットワーク]→[インターフェース]→[デバイス]タブに移動。
一番下にある[デバイス設定を追加]を押下。
存在するデバイスで無線デバイスがあるはずなので、それを選択します。LIVA Zの場合は、「wlan0」になるはずです。

[ネットワーク]→[無線]から無線デバイス一覧が表示されるため、該当の無線デバイスで[編集]を押下、ESSID欄にてSSIDを設定をします。
ネットワークに「wwan」を設定することでWAN側のデバイスとして設定ができます。
また、パスワードは隣のタブにある[セキュリティ]から設定します。

 
無線LANの設定が終われば、作業用PCからLIVA Z(OpenMPTCProuter)を経由してインターネット接続ができるようになっているはずです。
安全な確認くんは以下のような感じ。

 
で、ここからさらに肝心のVPS接続をします。予め作ったVPSの情報を設定します。
[システム]→[OpenMPTCProuter]→[Setting Wizard]タブに移動し、
ServerIPはさくらVPSのホスト名を指定。(IPアドレスでもいい)
Server usernameはopenmptcprouter_config.txtの「openmptcprouter」の値を設定。ただし、これはデフォルトで設定されているはず。
ServerKeyはopenmptcprouter_config.txtの「Your OpenMPTCProuter Server key」の値を設定。


画面下方にあるInterfaces settingでデフォルトで入っている「wan1」[wan2]は使用しないので削除します。

また、WAN側となる「wwan」にてMultipath TCPをマスターに変更します。


保存することで[ステータス]タブに移動します。
下記のようになっていればOK。
上から順に作業用PCに使ったJetson nano、LIVA Z、VPSとなっています。また、右横にWAN回線として「wwan」が表示されます。

安全な確認くんで確認すると、VPS経由で接続できていることが確認できます。

 

5.2回線目を登録する

先に結論から言うと、USB無線LANトングルでの計測はできませんでした。
まずドライバが無いという点は想定内なのはいいとして、ドライバのインストールができない。
engetu21.hatenablog.com
上記で実施したのはUbuntuですが、OpenMPTCProuterはパッケージ・ソフトウェアがaptではなく、opkgというものを利用しています。
make,gccはインストールすることができるものの、いざmakeを実行しても「/lib/modules/5.4.194/build: No such file or directory.」と言われて止まります。この解消方法は、build-essential、linux-headersをインストールするというのは検索でわかるものの、それをopkgで実現する方法が不明。
また、国内はほぼ情報がないので海外の掲示板を漁るものの、有効な手段は見つけられず。なんなら「Realtekは新しいドライバをひっきりなしに作るからサポートされているのは稀」みたいなことが書かれている始末。OpenMPTCProuterはOpenwrtをベースにしているため、どちらかというとOpenwrtをメインに調査しましたが、有効な手段はなく。
要するに詰んだの諦めました。
 
さて、別の手段として考えたのが、スマホのUSBテザリング機能を使ってWiFiを間接的に掴むことです。
無論802.11のどこまでをサポートしているかはスマホの年代にも依存しますが、一旦仮接続としてOUKITELのスマホを接続して確認。これはac(WiFi 5)まで対応しているため、非常に高速で利用することが可能。
 
まずは、WiFi接続されたスマホをOpenMPTCProuterを入れているLIVA ZとUSBケーブルで接続し、スマホの設定で「USBテザリング」をONにします。
次に以下の手順でOpenMPTCProuterに認識をさせます。
[ネットワーク]→[インターフェース]→[デバイス]から[デバイス設定を追加]を押下。
バイスの選択にて「usb0(wan1)」を選択。

保存&適用し、続いて[システム]→[OpenMPTCProuter]へ。
画面下部から「usb0」を選択し、インターフェースとして追加。

「Multipath TCP」を「有効」にして適用。


[システム]→[OpenMPTCProuter]→[ステータス]
で回線が2つになってることが確認できます。
ちなみに、OpenMPTCProuterのIPアドレスとアドレス帯域は変更してます。

 

6.実測

パターンごとに図ってみました。時刻としてはほとんどの人が使っていない深夜帯。
USB接続スマホSoftbank光(802.11ac)、LIVA Zの内蔵WiFiがアパートWiFiに接続されています。
以下に記載しているMasterは主回線として指定している回線。有効(enable)はMasterほど優先度高くないけど、有効にされている回線です。
なお、設定にはbackupのように、主回線に問題が合ったときの冗長化用の設定もあります。

6.1 アパートWiFiのみ


6.2 Softbank光(802.11ac経由)のみ


6.3 Softbank光(Master) + アパートWiFi(有効(enable))


6.4 アパートWiFi(Master) + Softbank光(有効(enable))

遅い方の回線をMasterに設定すると速い方の回線は補助に回るためか、速い方をMasterにした場合と速度に違いが出てるようには見えます。また、2回線利用することで10Mbpsがアップしているようには見えますが、計測は諸々の影響でどうしても誤差は発生するため、劇的には速度アップはしていないようには見えます。
ただまぁ、単体の回線速度が高いというのもあるので、これが回線混んでいる場合にこの機能がどうなるかは気になるところ。
 
なお、OpenMPTCProuterにはByPass機能があるため([サービス]→[OMR-Bypass])、こちらを利用すると、VPS経由ではなくなります。(当然2回線利用ではなくなりますが)
例えば、速度測定に使ったUSENドメインを登録し、Softbank光で確認すると以下の通り。

これと比較するとVPSボトルネックとなって通信速度とping速度が落ちているということがわかります。
VPSを経由すると100Mbpsが限界値なようにも見えます。なお使ってるのはCPU:2core、メモリ:1GBです。
公式Githubではラズパイ3(4コア1.2Ghz、1GB)で100Mbpsぐらいが限度だとの発言があったので、このVPSスペックだとこれが限界ということでしょう。
またping速度の落ちは非常に高いため、ゲームサーバなどと繋げる場合はBypassで設定しておいたほうが無難そう。
 
まぁ繋げる回線によっては恩賜を受けられるでしょうし、何よりルータOSとして作られたベースとなっているOpenwrtがいい出来なのか、GUIでの設定というのがとても操作しやすいので、それだけでもUbuntuで人力ルータ作成よりは楽。
ただ、ルータ向けOSだからかパッケージは軽量なopkgで管理ということで、正直aptでできることがそのままできるわけではないということで戸惑う部分は多い。まぁopkgもコマンド打たずにブラウザ上の操作でインストールできたりするけども。
まぁ今回のチャレンジでかなり知識と経験が得られたからよかったかな。

【ミニPC】CHUWIのLarkBox Proを購入

手のひらPC、CHUWIのLarkBox Proを買いました。
www.amazon.co.jp
 
もはや手持ちのsoundcore mini 3(Bluetoothスピーカー)より小さいけど、性能としては十分。
16000円なので使い潰してもあまり痛くはない。
最近は低電力の日常用と高電力の高速処理(ゲーム等)用でPCを分ける運用をしているけど、
高速処理については、以下で紹介してる自作PCを使ってる。
engetu21.hatenablog.com
 
日常用に関しては、OneMix2をこれまで使ってた。
pc.watch.impress.co.jp
が、バッテリーがパンパンに膨れてやばそうなので取り外したり、勝手にzキーが押され続けたり(これはディスプレイを裏返してタブレットモードにすることで解決(解決してない))、YouTube等の動画再生を走らせるとたまに熱暴走?でフリーズして戻ってこない等、とても日常用として使用できないので引退してもらうことにした。
 
LarkBox ProのスペックはAmazonで書いてある通りなので、特筆すべきことはないけど、この記事を書くにも支障はでてないし、同時に裏で動画を流すのも何ら問題ない。メモリ容量は厳しめだけど、まぁゲームとかしない限りは全く普通に使える。Officeは持っていないのでそちらでの使い勝手は不明。
ちなみに当たりはずれがあるのか、Windows11にできないといった書き込みを見るが、私が買ったものに関しては普通にWindowsUpdateにてWindows11のアップグレード案内がでた。枯れてなさそうなのでする気はないけど。
 
HTML5 ベンチマークで計ってみた。
s3-ap-northeast-1.amazonaws.com

比較対象は特に設けてないけど、これを見て納得できる人であれば購入を考えてみてもよいのでは。

【Ubuntu22.04】激安USB無線LANドングル(RTL88x2bu)のドライバインストール

AKEIEというメーカの1200MbpsのUSB無線LANドングルをAmazonで買いました。お値段1500円。
www.amazon.co.jp

よくあるコピー品なので、まぁ似たような製品の中で一番安いのをチョイス。

Ubuntu22.04を入れたLIVA Zに挿してみたところ、GUI上では認識されていなさそう。
では、ということでip address showを打ってみても表示はされない。
 
USBデバイスとしてそもそも認識しているかを確認。

$ lsusb
Bus 001 Device 010: ID 0bda:b812 Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey]

認識はしているようなので、その点で問題はなさそう。
おそらくドライバがないんだろうと踏んで、出力された「RTL88x2bu」で検索をかけてみる。
ドライバが提供されていたので、そちらを利用します(なお、RTL88x2buはチップセット名らしい)。
GitHub - RinCat/RTL88x2BU-Linux-Driver: Realtek RTL88x2BU WiFi USB Driver for Linux
今回はgitコマンドで取得。

$ git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
Cloning into 'RTL88x2BU-Linux-Driver'...
remote: Enumerating objects: 2712, done.
remote: Counting objects: 100% (242/242), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 2712 (delta 216), reused 187 (delta 180), pack-reused 2470
Receiving objects: 100% (2712/2712), 8.28 MiB | 1.09 MiB/s, done.
Resolving deltas: 100% (1939/1939), done.

 
ダウンロードしたディレクトリに移動し、makeを実行。

$ cd RTL88x2BU-Linux-Driver/
$ make

gccが入っていない場合はsudo apt install gccで入れるべし(1敗)

なにやらちょいちょいwarningがでているけど、とりあえず終わるまで放置。

完了したらインストール。そして再起動。

$ sudo make install
install -p -m 644 88x2bu.ko /lib/modules/5.15.0-47-generic/kernel/drivers/net/wireless/
/sbin/depmod -a 5.15.0-47-generic

$ sudo shutdown -r now

GUI上もip addressコマンドでも表示されたことを確認。本体のLEDも点灯してくれるようになります。
ちなみにWindowsなら挿すだけで認識します。ここらへんは流石というべきか。
 
追記。
Ubuntu22.04の仕様なのかLIVA Zに問題があるのか、内臓のWiFiと今回のドングルでインタフェースとしては2つ備えることになるが、どうもGUI上で片方をOFFにしようとすると、WiFiという機能そのものをOFFにするらしく、どちらかを稼働させておくことができないらしい。
この場合は、以下のコマンドでデバイスを直接指定してOFFにするといい。

$ ip l
でデバイス名を確認し、

$ ip link set デバイス名 down
でリンクダウン。

$ ip link set デバイス名 up
でリンクアップに戻せる。

なお、一時的にZorin OSを入れてみたところ、片方のみOFFにはできたので、おそらくUbuntu22.04の仕様かバグの模様。
 
さらに追記。
調べてるうちに「nmtui」というコマンドに辿り着いたけど、どうやらこれを叩くとGUIっぽくWiFiネットワークの選択やIPアドレスの設定をすることができるらしい。
UbuntuServerのようなCUIオンリーの場合は便利そう。
※コマンドが無いと言われる場合は、sudo apt install -y network-managerで導入可能。
ただし、ラズパイなどは、dhcpcdを使っているため、設定がバッティングして途中でネットワークが落ちる(のかはわからないが、SSHは切れてしまう)事象が発生したため、その場合はdhcpcdを落とす必要がある。その場合は以下のサイトが参考になる。
signal-flag-z.blogspot.com

Oracle→PostgreSQLマイグレーション時の「型」について/Ora2Pgについて

Oracleにあるテーブルと同様のものをPostgreSQLで作成する場合、
型については大体以下の様に変換すれば、CREATEを作るときに困ることがなく、
OracleデータをCSVで落とし、そのままPostgreSQLに登録した時もエラーにならない(基本的には)。

1.主な変換表

・NUMBER(4, 0):整数
→整数の場合は9桁までならinteger
→10桁以上はbigint
 
・NUMBER(4, 2):小数点あり
→numeric(4, 2)
 
・VARCHAR2(24):可変長文字列
→varchar(24)
→あるいはcharacter varying(24)
 
・DATE:日付
→timestamp
 
・条件分岐
DECODE(列名, 条件1, 結果1, 条件2, 結果2, 結果3)

CASE 列名
WHEN 条件1THEN 結果1
WHEN 条件2THEN 結果2
ELSE 結果3 END
 

2.Ora2Pgについて

・OracleDB用のDDLDMLファイルがあるなら「Ora2Pg」を使うのも手。
一応、インストール方法と実施方法を記載。(下記はWindows10でのインストール)
■ora2pgをDL
https://github.com/darold/ora2pg
[↓Code]からDownload ZIPを選択して落とす。
 
■Strawberry PerlのDL
https://strawberryperl.com/releases.html
Portableの64bitを落とす。
 
■Strawberry Perlを解凍
解凍後、コマンドプロンプトでportableshell.batを実行(管理者権限は不要)
 

>portableshell.bat
(略)
Perl executable: C:\Users\hondxuser01\Downloads\strawberry-perl-5.32.1.1-64bit-portable\perl\bin\perl.exe
Perl version : 5.32.1 / MSWin32-x64-multi-thread

 
環境変数にPATHを通す
C:\strawberry-perl-5.32.1.1-64bit-portable\perl\bin

※一旦再起動

■ora2pgを解凍
ora2pgのフォルダ配下で以下のコマンドを実行

>perl Makefile.PL
(略)
Now type: dmake && dmake install

 
■Makeの実行
上記の通り、dmake && dmake installを実行すると怒られる。

>dmake && dmake install
#############################################################
### ###
### DMAKE WARNING ###
### ###
### Do not use dmake.exe utility as it is no longer ###
### part of Strawberry Perl, use gmake.exe instead! ###
### ###
### If you have troubles with CPAN client delete: ###
### %USERPROFILE%\AppData\Local\.cpan\CPAN\MyConfig.pm ###
### ###
#############################################################

※dmake.exeユーティリティはStrawberryPerlの一部ではなくなったため、使用しないでください。代わりにgmake.exeを使用してください。
とのこと。
 
助言に従って、gmakeを使用する。

>gmake && gmake install

Cドライブ直下にora2pgフォルダが作成される。
 
■ora2pgコマンド実行
とりあえず、コマンドが動くことを確認。

>ora2pg
FATAL: can't find configuration file C:\ora2pg\ora2pg.conf

Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]

-a | --allow str : Comma separated list of objects to allow from export.
Can be used with SHOW_COLUMN too.

 
※PCを再起動すると環境変数が読み込まれず、コマンドが打てない場合
その場合はしょうがないので、DLしたフォルダのora2pgを直接叩くことでも実行可能
C:\DataDirectory\04:soft\ora2pg-21.1\blib\script\ora2pg

■OracleSQL→ポスグレSQL変換コマンド

> ora2pg -c ora2pg_dist.conf -i aaaaaaaaaaa.sql -o aaaaaaaaaaa_pg.sql -t QUERY

 
「-c」でコンフィグファイルを指定する必要がある。
基本的にはora2pg配下にあるconfファイルを指定する。
 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
あまり関係ないけど、ポスグレではCREATEするときはテーブル名もカラム名も全て小文字がよい。
例えば、社員テーブルをEmployeeという名前で登録した場合、
SELECTのFROMで「EMPLOYEE」や「Employee」で実行すると、すべて小文字にてSQLが発行されるため、
そんなテーブルはない、と判断されてエラーが返ってくる。
一応、""(ダブルクォーテーション)でテーブル名を囲うことで解決は可能だが、
いちいちSELECTで設定するのはきついので、基本的には小文字で全て管理していくほうが混乱が発生しない。
参考:https://ringtreelab.hateblo.jp/entry/2021/10/08/214007

【Tableau】式のメモ

業務でTableau(Desktop/Server)を弄るようになったのでメモ。
式はDesktopとServerの両方で使えるはずだけど、一部の関数は片方にしか用意されていないのとかあるので、その場合は代替を利用する必要があるかも。
 
■年月日(2022-01-01)を示すカラムから202201(年月で6文字)の形で文字列として別項目で定義する場合
LEFT(str([year_month_day]),4) + SPLIT(str([year_month_day]),"-",2)
・LEFTで対象の項目の先頭から4文字取る(2022(年)の部分)
・SPLITで、-(ハイフン)を区切り文字として、2句目の2文字を抽出
・それぞれの文字列として足す。
 
■202201等の6桁の文字列を日付として定義する場合
※カラム「Ym」に202201(仮)が入っている場合
DATE(DATEPARSE('yyyyMM',[Ym]))
 
■データとして値が入っていない(空、またはNULLだった)際に0埋めで表現したい場合
ZN(LOOKUP(SUM([kingaku]),0))
参考:https://note.com/rika_olga_f/n/n2e8e0454d4ec
 
■会計年度の算出方法
DATEADD('month', -12, [年月])
 
ただし、そもそもの会計年度の始めの月(大体4月)をディメンションで設定するのはTableauDesktopでしかできないようで、TableauServerでの実現に言及したサイトは皆無でした。
参考:https://community.tableau.com/s/question/0D54T00000G54goSAB/%E5%B9%B4%E5%BA%A6%E3%81%AE%E9%96%8B%E5%A7%8B%E6%9C%88