自身のIPアドレスの重複検知

TL;DR Ubuntuサーバ20.04で、重複しているIPを持つサーバから重複しているかどうかを検知する場合は arping -I eth0 -0 -c 2 (IPアドレス) (eth0は適宜置き換え)を実行し、応答がある(戻り値:0)場合は重複あり、応答がない(戻り値:1)の場合は重複なしと判断します。 経緯 Ubuntu20.04 サーバ上で使用しているIPアドレスが重複しているかどうかを、そのIPアドレスを使用するサーバから検知したいと考えました。 arping, arp-scan等のコマンドを使うと説明するサイトが多数見つかるのですが、ほとんどが重複しているIPを持つ可能性のあるサーバとは別のサーバで実行することが前提のようで、うまくいきませんでした。 自身が同じIPアドレスを持っていると、そのIPアドレスを対象としたARPリクエストを送ってくれないようでTIMEOUTになってしまいます。 そこで、-0(数字のゼロ)オプションをつけると、ARPリクエストを送ってくれるようになりました。ただし、自分自身からは応答が帰ってきませんので、応答がある(戻り値:0)場合は重複あり、応答がない(戻り値:1)場合は重複なしと判断することになります。 このオプションは、ARPリクエスト送信時の送信元IPアドレスを0.0.0.0にするもののようで、これによりARPリクエスト自体が送られない問題を回避できるようです。 参考: Ubuntu20.04にインストールされるThomas Habetsさんのarpingのマニュアル

<span title='2021-09-09 00:00:00 +0900 +0900'>September 9, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Ubuntu20.04 でのsecondary IPの設定

Ubuntu 20.04の2台構成で、サーバ固有のIPアドレスとは別にクラスタ用IPアドレスを割り振ることでクラスタを組もうとした際のメモ。 通信の送信元はクラスタIPで行いたい。Ubuntuで複数IPを割り当てると一方がSecondaryとなり、通信の送信元にはSecondaryでない方が使用される。これはsshサーバに接続してログに表示される接続元IPで確認。 サーバ固有のIPが192.168.1.191,クラスタIPが192.168.1.11の場合に、クラスタのマスタからメンバに降格してサーバ固有のIPのみ割り振られた状態で再度クラスタIPを追加すると、クラスタIPがSecondaryとなってしまう。/etc/netplan/99_config.yamlにて以下のように指定しているのだが。 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false dhcp6: false addresses: - 192.168.1.11/24 - 192.168.1.191/24 gateway4: 192.168.1.254 nameservers: addresses: [192.168.1.254] IPアドレスの順番を変えてもダメ。どうも、追加したIPアドレスが必ずSecondaryになるという仕様らしい。対応として一旦クラスタIPアドレスのみ割り当て、サーバ固有のIPアドレスを追加するという手順を踏んだところ、クラスタIPアドレスがSecondaryでない設定をすることができた。 …と思っていたが、それでもうまくいかないケースが発生。 インストール時にサーバ固有IPを初期設定すると、/etc/netplan/00-installer-config.yamlに設定が書き込まれ、そちらも含めて設定しようとするらしく、/etc/netplan/99_config.yamlを書き換えてもサーバ固有IPが解放されない状態となった。これは/etc/netplan/00-installer-config.yamlを/etc/netplan/00-installer-config.yaml.disabledのようにリネームすることで解消した。 /etc/netplan/00-installer-config.yamlを作成しろという記事はあるが、/etc/netplan/00-installer-config.yamlを無効化しろという記載がない記事が多いので、落とし穴かもしれない。

<span title='2021-06-24 00:00:00 +0900 +0900'>June 24, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Ubuntuのオンラインアカウント

Ubuntu 20.04で確認 設定に「オンラインアカウント」という設定がある。これにGoogleアカウントの設定もあり、設定したところGoogle Driveを参照できた! ローカルストレージをみると増えていっている様子はなく、閲覧、編集時に都度撮ってくる方式と思われる。素晴らしい。 私はWindows, Mac, Linuxを使っており、(ブラウザ経由ではなく)どの環境でも使えるオンラインストレージのアプリを使おうと思うとDropbox一択だと思っていた。 UbuntuであればGoogle Driveも3つのOS環境で利用できそうだ。 5/20 追記 KeePassのファイルをGoogleDriveからKeePass2で開いて保存したところ、ファイルが破損してしまった。KeePassXCでは読み取り専用でしか開けない。現時点では読み取り専用でしか使えないようだ。

<span title='2020-05-20 01:00:00 +0900 +0900'>May 20, 2020</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Ubuntu 電源ボタンでシャットダウン

家族が出入りする場所にパソコンがあり、誤って電源ボタンを押してONになってしまった場合に、ログオンせずに電源ボタンでシャットダウンできないかと考えた。 逆に誤ってシャットダウンする危険性はあるが、それは自分が気をつければ良いと判断。 Ask Ubuntuにズバリの回答があり、これを適用したところ意図した動作を実現できた。 sudo nano /etc/acpi/events/power event=button/power action=/sbin/poweroff sudo service acpid restart https://askubuntu.com/questions/1000393/how-to-configure-the-power-off-button-to-just-power-off-instantly-in-ubuntu-17-1#answer-1081407

<span title='2020-05-20 00:00:00 +0900 +0900'>May 20, 2020</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

MS Unit TestにおけるDeploymentItem

MS Unit Testにてテストファイルを配布してテストに利用する方法がようやくわかった。 ファイルをソリューションエクスプローラー上に登録して「出力ディレクトリにコピー」を「常にコピー」あたりにすればファイル名で参照できるのだが、ディレクトリは指定できないし、何よりリリースファイルに含まれてしまう。 https://stackoverflow.com/questions/16787003/deploymentitem-not-deploying-files にあるとおり、ファイルのパスを指定する際に「....\」を追加したところ、正常に動作するようになった。 第二引数でディレクトリ名を指定すればそのディレクトリにコピーされる。

<span title='2019-01-26 00:00:00 +0900 +0900'>January 26, 2019</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41