FreeBSDのportsでHTTP/3への道 (挫折1回目)

FreeBSDでNginxのportsがHTTP/3に対応した。2022年2月上旬時点ではwww/nginx, nginx-full, nginx-liteは非対応でwww/nginx-develのみ対応。

nginx-develのビルドオプション
www/nginx-devel をmake configするとビルドオプションが表示されるのでHTTPV3と、HTTPV3_BORINGまたはHTTPV3_QTLSのどちらかをチェックしてNginxをビルドする。HTTP/3ではQUICのTLSに対応したOpenSSLが必要なのでBoringSSL(Google系)またはopenssl-quictlsが必要。(どちらもOpenSSLからのフォーク)

つまり、事前に security/boringssl または security/openssl-quictls のportsをビルド&インストールすることになる。
で、試そうとしたところ、boringsslにしろquictlsにしろFreeBSDのPKG/PortsでインストールしたOpenSSLやLibreSSLとコンフリクトするという嫌がらせ状態、というかBoringSSLやquicsslへの対応がほぼ進んでいない。なにしろこれらは「このQUIC対応のOpenSSLフォークはアルファ段階にあります。本番環境では使用しないでください。」というくらい。

既にPackage/PortsでOpenSSLやLibreSSLを入れている環境ではそれらを除いて代わりにboringsslやopenssl-quictlsをインストールすることになる。 portsのオリジン替えが必要になるので先に/etc/make.confを変更。

/etc/make.conf (変更)
#変更前
DEFAULT_VERSIONS+=ssl=openssl  #現在OpenSSL使用の場合

#変更後
DEFAULT_VERSIONS+=ssl=boringssl
#または
DEFAULT_VERSIONS+=ssl=openssl-quictls

OpenSSLまたはLibreSSLからBoringSSLまたはOpenSSL-QuicTLSほのportsのオリジン替えが必要になる。

portupgrade -o 新ports 旧ports で指定。

#OpenSSLからopenssl-quictlsに変更する例
# portupgrade -o security/openssl-quictls security/openssl

OpenSSLに依存していたportsを含めてビルドし直す。
# portmaster -r openssl #旧ports名を指定
または
# portupgrade -fr openssl-quictls #新ports名を指定

Nginxがインストール済みの環境であれば www/nginx-develでmake configしてHTTP/3対応オプションを指定して保存していればNginxもQUIC TLS対応でビルドし直される。

問題は、2022年2月時点のFreeBSDのportsは security/openssl や security/libressl に依存するように作られているのでsecurity/boringsslやsecurity/quictlsをインストールするとそれらがビルドエラーになることがある。特にboringsslへの対応は全くというほど期待できない。OpenSSL/LibreSSLに依存するportsがビルドエラーで死屍累々という感じ。
openssl-quictlsはMySQL Clientのビルド失敗に繋がった。MySQL-Serverがビルド失敗になるだけならMySQL Serverを別ホストに置けば対処できそうだがMySQL Clientのビルドができないとなるとお手上げ。それ以外はビルド自体は多くが成功したのであと一歩感を感じながら敗北。
つまり、「がとらぼ」の人の、Nginx + MySQL + PHP + WordPressでHTTP/3を実現するという目論見は打ち砕かれた。
portsを使わないまたは自力でportsを作ってBoringSSLまたはopenssl-quictlsを別の場所に作成してHTTP/3対応のNginxを自力でビルドするというのはその後の更新が大変なのと複数鯖でやるのがキツいのでportsで対応を待つしかないのかな?
素のOpenSSLやLibreSSLが素直にQUIC TLS対応になってくれたら一番カンタンなんだろうけど。
2022年中に進展があると嬉しいかも。

現状のportsでもこうすればカンタンにできるよという方法があったら教えてください。

曲がってしまったアンテナを支えてみた (思った以上に失敗した例)

カラスの攻撃
©いらすとや.

アンテナが自身の重みまたはカラスのイタズラ?で曲がってしまうのでアンテナケーブルをパテで固めるという記事を以前に挙げた。
これでアンテナケーブルが曲がってアンテナエレメントを支えられなくなるということはなくなったが、針金アンテナ全体を支えるのに同軸ケーブルの芯線と網線だけでアンテナと給電部を保持する構造だったため、その弱い部分が風(や鳥)の影響などで数ヶ月という短い期間で曲がってしまった。前回ほどの盛大な垂れ下がりではないにしろ30°ほど向きが曲がってしまうとイヤでも気になる。今後これ以上悪化させないために根本的に曲がらないようにしたいと思った。

アンテナ改修 失敗例 1
直径3mmの針金アンテナ全体を支えるにはRG-58Uケーブルの細い銅の芯線とヤワヤワな網線では無理があった。そこで針金アンテナ自体を支柱で支えようと考えた。しかし、プラスチックの支柱にアンテナエレメントを直接接触させるとアンテナの特性がブレブレ。アンテナに触れる部分の素材を幾つか試したところ比較的良好だったのが写真に写っている樹脂プレート。その樹脂プレートにタイバンドで針金アンテナを固定した。
樹脂ブレートに針金アンテナをギチギチに固定することでアンテナの特性がブレまくるということはなくなるようだが、アンテナエレメントが物体に触れることで特性自体が変わるのは避けられない。今回は樹脂に触れることで1090MHzに合わせていた特性が950MHzあたりに変わってしまった。そこで1090MHzに合わせるためにエレメントの両端を12mmほど切断した。(実際にはVNAで計測しながらヤスリで削り落とした)
しかし、アンテナを支柱に取り付けるためにケーブルをアンテナの短いエレメント(給電部含む)と並ぶ方向にしたのが良くなかったかもしれない。アンテナエレメントと垂直にアンテナケーブルが出るようにした方が良いというのをどこかで見たので、これは良くなかったかなと後悔している。

アンテナ改修 失敗例 2
アンテナ近くのバンドパスフィルタを収めた新しい防水ケース。簡易防水なので防水性能を信用できない。そこでケースの蓋を閉じた状態でシリコンパテでシーリングした。元の予定ではLNAとバイアスT(の直流停め用)も収める筈だったが、新しく購入したLNAが動作試験で早々にぶっこわれたので今回はバンドパスフィルタだけをケースに収めた。最近1ヶ月ほどLNA無しの運用だったが今後も暫くはLNA無しで。

アンテナ改修 失敗例 3
590MHzから1590MHzの広い範囲でのSWR(右グラフ赤線)を見た。(右グラフの中央のマーカー部分が1090MHz)
エレメントの長い側のエレメントを削り落としたのでSWRで見る限りは狙い通り1090MHzで最も下がる状態。スミスチャートの青線も1090MHzでちょうど中心の50Ωになる。

アンテナ改修 失敗例 4
もう少し狭い範囲の990MHzから1190MHz。
1090MHzでSWRが1.06という良好な数値なので一見上手く出来ているように見える。

これで完成したつもりだったが、ADS-Bの受信状況は大幅に悪化。改造前(LNA無し時)の7〜8割程度の受信量になってしまった。
やはり、アンテナエレメントには何も触れさせない方が良さそう。それと給電部から伸びるアンテナケーブルはアンテナエレメントと垂直方向に取り付ける方が良さそう。そこで、次回はNコネクタを使ってアンテナ給電部に強力に固定させたいと思う。春節前日にNコネクタを注文したけど中国の春節連休明けて3日経ってもまだ発送すらされないので長らく待たされそう。

針金アンテナの方は、今回短くしてしまったので新しいのを作る予定。ホームセンターで売ってる「針金」じゃなくて金属の「棒」を買うとカンタンに綺麗なのが作れる。金属棒を直角に曲げるときは事前にしっかり曲げる位置を確認してペンチなどで1点に力をかけて一気に45°以上90°未満に曲げる。曲げ足りないのは追加で力を加えて目的の角度まで曲げれば良いが、曲げ過ぎたのを戻すのはNG。(強度が著しく下がって折れて千切れやすくなる)
力をかけたときに何処の位置でどのように曲がるのか事前に棒の不要な部分を利用するなどして確認しておくとより確実。

Up