立てているTor relay nodeがOverloadしたので対策した
TL,DR; 名前解決でOverloadしているのでsystemd-resolvedではなくUnboundを入れた。
自前で立ててるサーバをTorのリレーノードにしていることは何度か紹介したが、先日Relay Searchでチェックしてみるとノード名の後ろにオレンジの丸と、"This relay is overloaded"の文字が。
articleを読め、と言うので読んでみる。基本的にTCPポートが足りなくなっているか、DNSがタイムアウトしているかのいずれからしい。どちらが問題か切り分けるのがセオリーである。
My relay or bridge is overloaded what does this mean? | Tor Project | Supporto
まずはlsofコマンドで、Torがポートをどれほど使っているか確認してみる。オプションの意味は適当に検索されたい。
sudo lsof -a -iTCP -n -c tor -P
結論としてTorの接続数は高々5000程度で、少なくはないが溢れるほどではない(net.ipv4.ip_local_port_rangeのデフォルト値が32768 65000なので、接続数は3万程度は問題ないはずである)
となるとDNSの名前解決が問題になってそうである。確かに普通にapt updateをして見てもレポジトリの名前解決に失敗することが頻発する。
Torリレー用のサーバはUbuntuなので、デフォルトでは名前解決にsystemd-resolvedが使われている。前述のTor公式ではtimeoutの設定を変えてみるように記載されているが、試しにtimeout:3(デフォルトは5)などにしても変わりは無かった。
と言うわけでsystemd-resolvedからUnboundに変更してみる。これは以前の記事を参考にされたい。今回はIPv6云々は関係ないのでインストールして設定するだけで十分である…が、インストール後にsystemd-resolvedを停止してUnboundを再起動する必要がある。
RaspberryPiにUnboundを入れたけど、IPv4/v6デュアルスタックだとv6のDNSサーバに出来なかった件 - 悪霊にさいなまれる世界 -The Demon-Haunted World
sudo systemctl stop systemd-resolved sudo systemctl restart unbound.service
nslookup等で正常に動作することを確認する。これでしばらく様子を見たところ、ノードの名前の後ろの丸が緑になり、Overloadの表示も消えた。一件落着である。
雑記:最近買ったモノ
たまには買ったモノを書いておく。
- 広栄社 クリアデント 歯垢染色錠 12錠入
www.cleardent.co.jp 小学校とかでたまに使わされるヤツ。電動歯ブラシを使ってるんだけど、本当に歯垢が取れているのか結構気になっていたので使ってみたところ、それなりに取れているのが確認できたので満足。ただし、歯と歯のすき間なんかはやはり難しいので、定期的に歯石を取りに歯医者には行こう。
www.nexcare.jp 新品の靴を買ったら靴ずれが出来てめっちゃクチャ痛いので慌てて購入。こんな薄いテープ一枚を貼るだけで全然靴ずれが出来ない。いつだって科学が勝利してきた。
- Fate/Grand Order-Epic of Remnant-亜種特異点3/亜種並行世界 「屍山血河舞台 下総国 英霊剣豪七番勝負」(3)
kc.kodansha.co.jp 最近コミカライズが進むFGOシリーズの中でも、イラストの質、ストーリー、スタックサーバントまでちゃんと活用してて、マスターがマスターをちゃんとやってるのでほぼほぼベストの作品。全巻買え。
今回はとりあえずこれぐらいにしておく。
「ログを一切取らない」と謳っていたVPNサービスから、2000万件を超える個人情報が流出した件
完全に笑い話。
www.hackread.comwww.privateinternetaccess.com
香港を拠点とする"UFO VPN"なるサービス、この手のVPNではよくある「No Log Policy」(ログは一切取らない)を掲げてたにもかかわらず、ログどころかユーザ名・平文パスワード・IPアドレス・接続先・タイムスタンプ諸々が保存されていて、これが流出した。
しかも、発覚したきっかけは、VPNMenterと言う調査サービスがElasticsearchクラスタに894GBのデータベースがパスワード無しで保存されていたのを発見したこと、というアボガドバナナかと案件。
ほかにも"FAST VPN", "FREE VPN", "Super VPN", "Flash VPN", "Rabbit VPN"と言うサービスのデータも含まれていたが、どうやらサービスの名前だけ違って全て同じアプリを使っていた模様。
今までも「ログは取りません」と謳ってたVPNサービスがFBIにログを提出していた、とかそう言う事件もあった(「そもそも月数ドル払うだけで、会社が法的リスクを背負ってくれると本気で思ってるのか?」と言う根本的な疑問がある)ので、わざわざおカネを払ってサードパーティのVPNを利用する意味が本当にあるのか、よく検討が必要だろう。
キーボード・マウス・液晶モニタ・LANケーブル無しでRaspberryPiを初期セットアップする
買ったはいいものの余り使い道がないRaspberryPi、せっかくなのでADS-Bの受信をしてFlightradar24にアップロードでもするか、と思い立ったが、電源・LAN・アンテナ線とケーブルが3本になり非常に移動しづらい。そこでLANをWiFiに変更し、色々とソフトを入れてみたところ見事に起動しなくなった。と言うわけでせっかくの機会なのでRaspberryPiセットアップ手順2020年度版を書こうと思い立ったのである
さて、RaspberryPiのセットアップをしている記事を見ると初期設定時には液晶を繋いだりキーボードを繋いだり、中々面倒なことをしている。しかし実はそんなモノは必要は無い。必要なのは愛と勇気とTeraTermだ。TeraTermは下記リンクから入手できる。別にPuTTYでも良い。
https://ja.osdn.net/projects/ttssh2/releases/
我々は独自の世界を建設している。新しい理想郷を建設するのである。 したがって伝統的な形をとるキーボードも液晶ディスプレイもいらない。LANケーブルもいらない。
さてさて、気がつけばRaspberryPiのデフォルトOSがRaspbianからRaspberryPi OSと言う名前に変更になった。現状は32bit版がしかないが、近いうちに64bit版もリリースされるらしい。しかもMicroSDカードへの書き込み機能なども付いたRaspberryPi OS Imagerなるものまで配布が開始されている。もちろんそれを使うのもいいだろうが、個人的にはtorrentでサクサクとダウンロードしてしまう方が好みなので使わない。そういうわけでここからが手順になる。
-
CUIでしか使わないのでRaspberry Pi OS (32-bit) Liteを選択する。
Download Raspberry Pi OS for Raspberry Pi -
ssh有効化のため、母艦PCでSDカードを読み込み、ルートに
ssh
と言う空ファイルを作成 - WiFiに自動で接続させるための設定ファイル、
wpa_supplicant.conf
を作る。内容は接続先のWiFiのSSIDとパスフレーズを入力する。パスフレーズは暗号化することが望ましいが、とりあえずここでは平文で構わない(あとで変更できる)country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="SSID" psk="Password" }
これでOK。ステルスESSIDの場合や、より高度なオプションを使用したい場合はArchLinux Wikiなどを参照すると良いだろう。 wpa_supplicant.conf
をssh
と同様に、MicroSDカードのルートに保存する。これだけで自動的に接続してくれる。- RaspberryPiにSDカードを挿入し起動。ルータからDHCPで割り当てられたIPアドレスを確認(ラズパイのMACアドレスは基本的にB8:27:EBで開始されている)する。
ここまでが母艦PCでの操作。ここからTeraTermで接続し、CUIでの作業になる。
- TeraTermでSSH接続。ID/Passはデフォルトのpi/raspberry。
- セキュリティのためおもむろにルートでのログインをロック。vimをインストールする。
sudo passwd -l root sudo apt install vim -y
- さらにSSH接続をLAN内に制限。
sudo vim /etc/ssh/hosts.allow sudo vim /etc/ssh/hosts.deny
hosts.allow
はsshd:192.168.11.0/24
、hosts.deny
はsshd:all
を追加 - IPアドレスをDHCP割当から固定に変更。
sudo vim /etc/dhcpcd.conf
下記行を追加interface wlan0 static ip_address=192.168.11.4/24 static routers=192.168.11.1 static domain_name_servers=192.168.11.1
- タイムゾーンとWiFiエリアを設定。2.4GHz帯WiFiは実は国別で使えないチャンネルがあったりするためである。ちなみに日本は14ch全てが使える。
sudo raspi-config
の4より、Change TimezoneでASIA→TOKYOを、Change WLAN CountryでJPを選択。 - systemd-timesyncdを設定。
sudo vim /etc/systemd/timesyncd.conf
NTPとFallbackNTPの2項がある。オーソドックスにNICTとntp.orgのプール、あるいはGoogleのNTPでいい。大学ならSINETのサーバがネットワーク的に一番近いかもしれない。
[Time] NTP=ntp.nict.jp FallbackNTP=0.jp.pool.ntp.org
timesyncdを起動。
sudo timedatectl set-ntp true
状態を確認
timedatectl status
これでNTP serviceがyesになってればいい。
- SDカードの寿命を延ばすためにスワップファイルを無効にする。おまじない程度。
sudo swapoff --all sudo systemctl disable dphys-swapfile
- パッケージ類を全てアップデートして再起動する。以降は固定割り当てしたIPアドレスで接続できる。
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y sudo reboot
ここまでで最低限の設定は終了。平文のWiFiパスワードが保存されているのが気持ち悪い場合、WPA supplicantを使用して暗号化パスフレーズに変更する。
wpa_passphrase SSID Password
を実行。するとWPA用の暗号鍵が生成され、下のような出力が得られる。network={ ssid="SSID" #psk="Password" psk=b99d2c0fb66194f93ad52b71051e1095dc76e12529321334b3feb18332608eb7 }
ダブルクオーテーションのついていないpskの行をコピーする。/etc/wpa_supplication/wpa_supplicant.conf
を開き、上でコピーした行を貼り付ける。平文パスフレーズの行は削除し良い。母艦PC側でも同様にしておこう。今後はこれがそのまま使える。
最期に、SSH接続をパスワード方式から意識高く公開鍵方式に変更する。
SSH設定参考サイト:Secure Secure Shell
- まずはTeraTermでSSHの鍵ペアを作成し、母艦PCに保存する。ここはセキュリティが高く処理も速いEd25519方式を指定する。なお、秘密鍵をTeraTermのフォルダに保存するとなぜか接続が失敗するので、その場合は作業用のフォルダを作ってそこに保存する。
-
TeraTermの「ファイル」から「SSH SCP」を選択し、公開鍵"id_ed25519.pub"を"Authorized_keys"としてRaspberryPiに移動。
-
RaspberryPi側の設定を行う。ssh用のディレクトリを作成し、公開鍵を移動。パーミッションを設定。このときにssh用ディレクトリの所有者・グループをroot:rootからpi:piに変更しておかないといけない(ここで引っかかった)
sudo mkdir .ssh sudo chown -R pi:pi .ssh sudo mv authorized_keys .ssh/authorized_keys sudo chmod 700 ~/.ssh/ sudo chmod 600 ~/.ssh/authorized_keys
- SSHの設定を変更。
sudo vim /etc/ssh/sshd_config
下記行を追加しルートでのログインを禁止、ポートを変更、キーファイルを指定、パスワードでのアクセスを禁止。PermitRootLogin no Port 34513 PubkeyAuthentication yes PasswordAuthentication no ChallengeResponseAuthentication no AuthorizedKeysFile /home/pi/.ssh/authorized_keys KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
- 変更を保存しSSHを再起動。ただしミスがあったときアクセスの方法がなくなるのでこのとき開いているTeraTermは閉じない。
sudo systemctl restart ssh.service
新たにTeraTermのウィンドウを開き、新しいポートでアクセス。パスフレーズではなく"RSA/DSA/ECDSA/ED25519鍵を使う"を選択し、1.で保存した秘密鍵を指定。アクセスできることを確認する。また、パスフレーズでのアクセスが通らないことも確認する。
問題が無ければこれで初期設定は終了。楽しいラズパイ生活を楽しもう
FirefoxのPDFビューワでデフォルトのページ表示サイズを変更する
調べたけど日本語の資料がなかったので。
about:config
のpdfjs.defaultZoomValue
の値を弄ってやればいい。
- デフォルト(空白)or
Auto
:自動ズーム page-width
:ページ幅に合わせるpage-height
:ページ高さに合わせる(と言う設定項目はないが高さに合わせてくれる)page-fit
:ページのサイズに合わせる
いまどきわざわざAdobe Readerとか入れなくてもいいよね的なアレ。以上。
メモ:Firefox設定変更
いつものユーザビリティを保持する変更3つを自分用にメモ
- 新規タブをバックグラウンドに開く
- 新しいウィンドウではなく新しいタブで開く
- ロケーションバーと検索バーを新しいタブで開く
- browser.tabs.loadDivertedInBackground
- faluse → true
- browser.link.open_newwindow.restriction
- 2 → 0
- browser.search.openintab
- faluse → true
以上。
イランでのウクライナ機撃墜を受けてIFF(敵味方識別装置)について調べてみた
国際空港の側で敵機どころか民間機もわからんで撃墜するとか、クビの上に着いてるのは帽子掛けか、ちゃんと識別はできなかったのか? と言う疑問点から出発し、そういえば敵味方識別装置については以前から気になってたけどまとめたことはなかったな、と思い英Wikipediaを参考に呟いた内容をまとめる。
出典が英Wikipediaかよ、と言う人はもっといいソースで調べてわかりやすくまとめてくれて良いんですよ。お願いします。
さて、IFF (敵味方識別装置、Identification Friend or Foe) である。劇場版バトレイバー2のワンシーンを思い出す人も多いだろう。システムは第二次世界大戦時のイギリスにまでさかのぼる。そこら辺の古い話はせず、現用のMark XIIのみに絞る。なおMark XIIの前は1950年代に開発されたMark Xで、パト2でもでてきたSIF (Selective Identification Feature) と言う単語もその頃から使われるようになった。
さてさて、敵味方識別装置と言っても、基本的に民間の航空管制用のSSR(二次レーダ、Secondary Surveillance Radar)と同様である。レーダから送信を行い、機体の反射波だけで機影を補足する一次レーダとは違い、レーダ側からは問い合わせを行い、相手に応答させるのが二次レーダである。この場合IFFインテロゲータから1030MHzの質問電波を出し、IFFトランスポンダが1090MHzの応答電波を出す。
近年使われている軍民共用モード3であれば3回送るパルスの間隔で、さらに質問電波のタイプをAからDに区別する…が、使われているのはAとCだけだ。パルス1とパルス3の間隔が8マイクロ秒ならモードA、21マイクロ秒ならモードCとなる。
モードAが機体を識別する8進数4桁*1のスコークコード*2を問い合わせ、モードCが気圧高度計の値を100ft単位で問い合わせる。トランスポンダは問い合わせに対し、自動的に回答する。
このモード3、前述の通りトランスポンダは自動的に質問電波に必ず答えるので、軍用機では発信位置から三角測量で敵に位置がバレてしまうため困る。よって軍用のモード4では、モード3/Aと同じような問い合わせを暗号化して行い、トランスポンダは予めセットされたコードと一致を確認してから、さらに位置を分りにくくするため遅延させて応答電波を出す、らしい。このモード4や、後述のモード5の暗号のセットに使うのがKIV-77やKIV-78 IFF暗号化アップリケ、なる謎の機械である。パンフレットなどはあるが、中身は当然最高機密のカタマリのようだ。
さて、さすがにスコークと高度だけでは足りないので、軍民共用モードSが1980年代に追加された。高度なパルス送信技術で色んなデータを送る…らしいのだが複雑なので詳細は省く。このシステムが空中衝突防止装置(TCAS)やADS-Bにも使われてる。さらにこのモードSを暗号化したものが軍用モード5である。米軍では2020年、つまり今年から本格的にモード5の運用を行うため、自衛隊やNATO各国もそれに合わせてモード5対応のトランスポンダの導入が進んでいる。
モード1と2は古い規格のようで、モード1はコクピットで設定する2桁5ビットのミッションコード*3で、モード2は基本的に飛行前に設定する機上変更不可の8進数4桁の機体番号だ。輸送機などでは機上で変更できることもあるとのこと。
だいたい調べたところではこんなところである。最期にF-2に搭載されているAN/APX-113(V) IFF質問・応答装置のカタログと、KIV-78 暗号化アップリケのカタログへのリンク、参考にしたWikipediaの記事を張っておく。
AN/APX-113(V) :
https://www.baesystems.com/en/download-en/20180518191818/1434555677018.pdf
KIV-78:
Identification friend or foe - Wikipedia
Aviation transponder interrogation modes - Wikipedia
Secondary surveillance radar - Wikipedia
米空軍国立博物館:
McDonnell Douglas F-15A Eagle > National Museum of the United States Air Force™ > Display