一部サイトだけつながらない

TL;DR DNSサーバのフォワーダをプロバイダ推奨の設定にしないと思わぬ障害に遭います 経緯 利用者より、ある取引先のWEBサイトがエラーで見られないとの連絡がありました。確認すると、Chrome,Edge,Firefox,IEのいずれもエラー。Chromeの場合はERR_SSL_PROTOCOL_ERR と表示されます。 10日ほど前にUTM(Fortigate)のFWのバージョンアップを行っていたので、まぁこれだろうと思って通信経路から外しても障害が解消しません。 SIMを搭載したiPad, iPhoneでキャリア網経由だと問題がなく、社内ネットワークに問題があることは分かりました。 ルータ直下にPCをつないでも症状は変わらず。ルータか、ONUより上流のキャリア側か、その間のLANケーブルか… WireSharkでパケットキャプチャをしてみましたが、私の技術力では原因を特定できず… ルータではフィルタリングをかけています。切り分けのため、予備機にフィルタリングを一切しない設定を実施。その配下にWindowsをつなぐのは怖いため、Linux(Lubuntu20.04)をセットアップし、IP固定、DNSは8.8.8.8としました。 Lubuntuで予備機に切り替える前に動作確認したところ症状が解消されていることを確認できました!!! そこで、もともと問題が発生してたPC(Windows10)でnslookupをDNSサーバ指定なしで実行した結果と、8.8.8.8を指定した結果が異なっていることが判明… 社内ではActive DirectoryのDNSを利用しています。DNSのキャッシュをクリアしましたが症状変わらず。フォワーダを確認したところ、かなり前にプロバイダから提供されて設定したグローバルアドレスでした。しかも現在はプロバイダを変更しています… 現在のプロバイダではDNSはルータでのPPPoEによる自動取得となっているので、フォワーダとして社内のルータを指定し、キャッシュを削除したところ症状が解消しました。 ちなみに変更前のプロバイダも現在は自動取得を推奨しているので、だいぶ前から設定が正しくなかったことが分りました。 結論として、誤ったDNS情報をもとに異なったサーバを見に行き、そのサーバはおそらく古いサーバでTLSのバージョンが古く冒頭のエラーとなったものと思われます。 サーバとの通信経路上の問題かと思ったら、通信を始める前の社内DNSの問題というオチ。改めてDNSは通信の基盤であり障害時には真っ先に調査・切り分けしないといけないことを実感しました。

<span title='2021-08-04 00:00:00 +0900 +0900'>August 4, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

7月に動作していた処理が8月にエラー

TL;DR 0始まりの数字を10進数で解釈させたい場合は$((10#$val))のように記載する。 経緯 date +%mの結果は、8月の場合は'08’となる。これを先頭の0を取って比較したいため$(($val))とやっていたところ、7月までは問題ないのだが8月になって以下のようなエラーが出る。 08: value too great for base (error token is "08") bashでは一文字目が0の数字は8進数とみなされるため、08という表記はダメ、というエラー。 対応としては、$((10#$val))のように変数の頭に'10#‘をつけることで10進数で解釈させることができる。 https://stackoverflow.com/questions/8078167/printf-in-bash-09-and-08-are-invalid-numbers-07-and-06-are-fine 同じようなことは過去してきたと思ったのだが、今回初めて遭遇してかなりびっくりした。

<span title='2021-08-02 00:00:00 +0900 +0900'>August 2, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

チラシお断りステッカーの効果

TL;DR チラシお断りステッカーをAmazonで購入して郵便受けに貼ったらチラシ投函が止まりました。(あくまで私個人の事例です。) 経緯 マンションに住んでいるのですが、いらないチラシがかなり頻繁に投函されていてうっとうしいと思っていました。住宅関連が多いのですが、他にもネット切り替えとか。投函する側としてもマンションにまとめて投函できるので効率が良いので、狙われやすいのではと思います。 で、半信半疑でAmazonのチラシお断りステッカーを貼ってみましたところ、以降ぴたりとうっとうしい投函が止まりました。投函する側としても無駄なトラブルは避けたいという思いがあるのか、予想以上の効果がありました。 同じ悩みのある方は、一度試してみるとよいかもしれません。あくまで私個人の事例のみの話ですが。 100均でもありそうだと思って探してはみたものの、ピタリなものはなかったです。自作すればよいのかもしれないのですが面倒なのでAmazonで購入しました。 https://www.amazon.co.jp/dp/B00RT6LMKA 個人的には、費用隊効果を考えるといい商品だったと思っています。

<span title='2021-08-01 00:00:00 +0900 +0900'>August 1, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

Accessの通貨型にはSystem.Decimal

TL;DR .Net FrameworkからAccessの通貨型の列に値を設定する場合は、System.Decimal型を利用する。 経緯 伝票番号が11桁の数値となるシステムにて、値をSystem.Int64型に格納していた。最終的にAccessのテーブルに格納する必要があり、こちらは通貨型で整数部11桁で定義していた。 OleDb経由でParameterを利用して(SQLにべた書きせずにobject型の変数として渡す)INSERTしたところ、何のエラーも吐かずにこけた。 どうも、System.Int64(=long)が渡されるとAccess側ではLong型(-2,147,483,648 ~ 2,147,483,647)に変換しようとするらしい。ただ、該当の列に「1L」(System.Int64型)を与えるとこけるが、「1」(System.Int32)ではこけないので、値そのものではなく型の違いによるエラーなのだと思われる。DEBUG実行してもエラーをはかずにこけるので切り分けに時間がかかった… 相手が通貨型11桁なのでそれに合わせてよしなに変換してくれるものと思っていたが甘かった。が、前回同じコードを実行した際にはエラーは起きなかったはずなのだが… 仕様が変わったのか? まぁ、特にAccessのような(レガシーな?)システムとの接続の際には、自動変換には期待せずこちらで必要な型が分かる場合は指定したほうが無難だと理解した。

<span title='2021-07-21 00:00:00 +0900 +0900'>July 21, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41

DockerコンテナのZabbixからDockerホストの監視

Ubuntu20.04で構築しているDocker環境にて Dockerコンテナで構築したZabbix serverでDockerホストにzabbix agentをインストールして監視する場合、Zabbix serverの接続元IPがDocker内部IPになってしまう。既定ではDockerコンテナのIPは毎回変わるため、zabbic agent側でzabbix serverのIPを指定できない(configファイルに記載が必須)。 Dockerホスト1台で運用する環境であれば、内部IPを固定してしまえばよい。 当方では、2台でActive-Standbyで運用しており、自サーバがActiveの場合は内部IPでアクセスが来るが、Standbyの場合には(自サーバでないActiveサーバの)外部IPでアクセスが来るため、serverとして2つのIPを指定したい。 https://www.zabbix.com/forum/zabbix-help/379138-one-node-monitored-by-2-differents-zabbix-servers によると、configのSERVER値に複数のIPをカンマ区切りで指定することもできるらしい。 一方で、SERVER値にはホスト名の指定もできるので、ホスト名に対するAレコードを複数登録して動作確認したところ、こちらも問題なく動作した。なお、PTRレコードは不要。 環境によっては、IP直指定よりもDNSの方がよいというところもあるだろう。

<span title='2021-07-02 00:00:00 +0900 +0900'>July 2, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tack41