【オン資】顔認証リーダーのネットワークエラー対処

# 引っ越しました
　日本の現在（2024年2月）の制度において、保険医療機関の「移転」は定義がなく、「廃止」と「新規」となる。ただし、「遡及申請」なる制度があり、点数算定要件の実績や患者情報の引継ぎは手順を踏まえた手続きを行うことで認められることがある。所属する市（管轄する保健所）が変わったり、都道府県が変わったりするような移転はおそらく認められにくいと思う。

　今回は引っ越したタイミングで「ひかり電話」を導入した。するとオンライン資格確認回線の接続が不安定となり、資格確認端末でオンライン資格確認はできるが顔認証リーダーがネットワークエラーとなったのでその対処について記述する。

![20240122_191712.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/2c96b9e7-ac5a-27fc-e2d1-ad19eccfee4f.jpeg)

　オンライン資格確認回線関係のネット記事ってそうそう無いので、誰かのトラブルシュートに役立てば良いことを願う。


# 設定を変更しなければいけないこと
　医療機関コードが変更となるため、

 ```
・電子証明書の申請とインストール
・windows資格情報の更新
```

 が必要となる。また、ひかり電話導入に伴い、

```
・ネットワークの構造変更
・ルーターの設定変更
```

が必要になる。

# 変更後のネットワーク（仮）

　この構成は公式発表には無い。公式ではVoIPとルーターは直列に接続するように紹介されている。後々変更するかもしれない。

 　後日変更することになりました。現在は ONU - VoIP - RTX1220 という直列接続になっています。

![ネットワーク構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/cca90073-43e7-96e3-b8d5-d32ee1802667.png)

　初期のころの「オンライン資格確認システム ネットワーク接続ガイド」にはインターネットにIPv6で接続してたら無理、という記載があったが今（ver1.7）は削除されている（マルチプレフィックス問題？）。RTX1220は仕様上vlanを使う場合はvlan1のみIPv6にできるっぽいので、vlan2からもインターネットをIPv6で接続したい場合はルーターを複数台準備するか、要件を満たす別のルーターを準備する必要がある。


# IPV6の回線
　NGN網のIPV6回線は、ひかり電話の契約有無で伝送方式が変わる。契約有なら`DHCPv6-PD`、契約無しなら`RA`。IPv4と違いDHCPに複数の仕組みがあるらしい。

　外側のDHCPv6サーバーからIPアドレスをもらうには、以下の設定を行う。外側のDHCPサーバーは56ビットのプレフィックス（ネットワークアドレス部）をこちらのルーターに付与する。不思議な感覚だが、その設定には「lan2::/64」と記述する。

```:RTX1220 外側DHCPサーバーからIPをもらう設定
# RAの場合
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan2 dhcp service client ir=on

# DHCPv6-PDの場合
ipv6 route default gateway dhcp lan2
ipv6 prefix 1 dhcp-prefix@lan2::/64
ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client
```

　そしてこちらのルーターは8ビットのホストアドレス「::1」を付け足して64ビットのIPv6アドレスを生成する。生成したIPv6アドレスから、サブネットマスク範囲のIPv6アドレスを内部のデバイスに付与する、という流れになる。

```:RTX1220 内部LANデバイスにIPv6を付与する設定
# RAの場合
ipv6 vlan1 address ra-prefix@lan2::1/64
ipv6 vlan1 rtadv send 1 o_flag=on
ipv6 vlan1 dhcp service server

# DHCPv6-PDの場合
ipv6 vlan1 address dhcp-prefix@lan2::1/64
ipv6 vlan1 rtadv send 1 o_flag=on
ipv6 vlan1 dhcp service server
```

　どちらの場合も、`Router Advertisement (RA)`で配下のデバイスにIPアドレスを配布し、`other_config_flag (oフラグ)`を`on`としている。これにより、クライアントはIPv6アドレスとDNSの情報をルーターから受け取る設定となる。

 　DHCPv6-PDとRAは単純に規格が違うというものではないっぽい。

  https://www.infraexpert.com/study/ipv6z5.html

# 業務用のVoIPルーター
　VoIPルーター配下にルーターを設置する場合はRAの設定となる。そしてほとんどの場合導入しているVoIPルーターはYAMAHA公式や厚生労働省の設定例で出てくるホームゲートウェイではなくて業務用のオフィスゲートウェイだと思う。
 
 :::note info
 電話機業者さんへ。
 　病院、診療所、訪問看護ステーション、薬局などの医療関係施設のひかり電話導入には「オンライン資格確認回線」の知識が必要になります。
:::

　（下図）NAKAYOのVoIP交換機。カードスロットがたくさんあり、1枚にはRJ45（LANのコネクタ）が3つあった。2つは空いており、INかOUTかもわからなかった（基盤の記載から設定できるような感じだった）。ネットワーク構成を変更する場合は電話機業者さんにも協力してもらわないといけませんね。

![交換機.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/030631f3-51a7-5b34-e855-f78b9fc1acbd.jpeg)


# オン資回線が不安定になる
　ひかり電話導入後、以前（ひかり電話導入前）のRA設定のままではオンライン資格確認回線には全くつながらない。そこでYAMAHAの公式サイトにある、DHCPv6-PDの設定にしてみたところ、回線に接続できるが不安定になった。顔認証リーダーもネットワークエラーとなり正常に動作しない。


　回線には不定期に繋がり、顔認証リーダーはエラーとなる。の図↓
 
![接続できない現象.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/200fcf77-3b2e-38d4-9796-c480122c4632.png)

　ネットワークエラーの`0x81000005`は顔認証リーダーとオン資端末の通信に問題があるらしい。USBケーブルを変えてみたが症状は変わらなかった。

　ポータルサイトにある、お問い合わせ先にメールで問い合わせたところ、ネットワークエラーは支払基金に聞いてくれ、との返答だった。いろいろ原因と対処を提案してくれたけど、残念ながらどれも効果は無かった。こちらがどんなネットワーク構成になってるかによって違ってくるから無理だよね...。メールでのやりとりだけでこの手のエラー解決は難しいと思う。


# 原因
　悪戦苦闘し数か月...原因をある程度絞った。ひとつはオンライン資格確認回線接続不安定の問題。もうひとつは顔認証リーダーとPCとの通信の問題。


## IPアドレスの奪い合い？
　想像だが、VoIPとDHCPでIPアドレスの奪い合いになっているようだった。ふとしたときにオン資回線につながるが、しばらくすると回線認証が通らなくなり、`nslookup`での名前解決もできない。ルーターを再起動するとまた接続される、という症状だった。IPアドレスが重複しているときに後から起動した方のIPアドレスが有効になるという本例と同様の症状が出る。

 　電話を発信、受信、通話してみてオン資回線が切断されるか実験してみた。回線は...切れない。うーん、関係ないのか？そもそも上位のルーターからDHCPでIPアドレスを受け取っているので、それぞれで独立したネットワークとなるように思うが...。

　オンライン資格確認回線につながっているLAN2インターフェースを再起動することでも接続される。やはりDHCPでのIPアドレス取得になにか関係があるのか。

 ```:RTX1220でLAN2を再起動するとつながる
interface reset lan2
 ```

```:ルーティング確認しても間違いはない
# show ipv6 route 
宛先ネットワーク         ゲートウェイ             インタフェース  タイプ
default                  fe80::207:7dff:fe4e:xxxx LAN2(DHCP)      static
2001:a253:f588:b000::/56 -                        LAN2            implicit
2001:a253:f588:b000::/64 -                        VLAN1           implicit
```

　ちなみに、vlan1の再起動では再接続されない。IPアドレスの「受け取り」に問題がありそう。
 

## セッション不足？
　ひかり電話はセッションを使わないらしい。でも電源投入時やアップデート時にちょっとだけセッションを使うとか...。曖昧な説明しかネットでは得られないため、しばらく様子を見てそれでも回線が不安定になるようならセッションプラスの利用を考える。
 
 　のちにセッションの問題では無かったことが判明。


## 顔認証リーダーの設定
　数日電源に接続していなかっただけだが顔認証リーダーの設定が飛んでいた。IPアドレス設定と時刻設定が狂っていたので、手動設定でネットワーク環境に合わせて再設定した。そういえば作業期間中に顔認証リーダー本体がアップデートをしていたような...アップデートで設定が初期化されたのかもしれない。

　顔認証リーダーのヒミツの設定画面をあける。

![20240123_125805.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/24b7225e-5a9d-e82d-268b-1d08b96ff3aa.jpeg)

　「メンテナンス」から「ネットワーク」へと進む。
 
![20240123_125812.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/8c612bae-144d-174e-9298-f1fb72cf1ea4.jpeg)

　ネットワーク設定画面が開くので、設定を「手動」にしてIPアドレスを入力する。

![20240123_125819.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/ef3b0e23-0b55-73c5-d6be-ec8042264622.jpeg)


# RTX1220の対策設定

```:RTX1220 config
ngn type lan2 ntt
ipv6 route default gateway dhcp lan2
ipv6 prefix 1 dhcp-prefix@lan2::/64
ipv6 vlan1 address dhcp-prefix@lan2::256/64    # ここが公式とは違う
ipv6 vlan1 rtadv send 1 o_flag=on
ipv6 vlan1 dhcp service server
ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client
```

　外側から付与された56ビットのネットワークアドレスに、「::256」を足してIPv6アドレスを生成する。VoIPのIPアドレス生成と付与がどのように動作しているのか詳細は不明のままだが、とりあえず動作しているので様子見とする。あくまでも想像だが、「::1」を付け足してRTXルーターのホストアドレスとしたときにVoIPルーターとIPアドレスが重複するのかもしれない。（のちにこの対処は意味が無かったことが判明）

 　オンライン資格確認の回線ってDHCPをリクエストするとどこまでを同一のネットワークとしてIPを配布しているのだろうか？NTTのID単位なのか、ONU単位なのか、そこらへんもよくわからない。


# おかえり

　帰ってきましたわ～。

![復帰.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/8efa89b1-317b-3f0d-5485-e52525a72de5.jpeg)

　不安定かどうかしばらく様子を見てみることにします。

# 安定して切れる
　　接続が継続するようにはなったものの、毎日午前中の9時～11時30分の間に1度だけ接続が切断されて、LAN2ポートインターフェースを再起動しない限り再び接続されることは無い、という症状になった。また一度接続すればその後は翌日まで安定して接続されている。

　現在の状態にまで復旧した後いろいろ考えたが、DHCPサーバーから見ればRTX1220とVoIPはどちらもDHCPクライアント。外側IPアドレスが重複しなければプレフィックスが異なっても問題は無い。理論上はセッション数に関係なく同時に通信が可能なはず。

 　1日1回、ネットワークのメンテナンスとかその類による構成変更（DHCPサーバーが切り替わるとか？）があるのかもしれない。

　以下の記事を見つけた。これかもしれない。

https://www.noblehero.jp/2023/01/20/%E3%83%A4%E3%83%9E%E3%83%8F%E3%83%AB%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A7%E5%AD%A6%E3%81%B6%E3%81%B2%E3%81%8B%E3%82%8A%E9%9B%BB%E8%A9%B1%E5%A5%91%E7%B4%84%E5%9B%9E%E7%B7%9A%E3%81%AE%E7%89%B9%E5%BE%B4-2/



## RSメッセージを送る設定を追記
　ネットワークが変更になった時に対応できるように再びIPアドレス配布を要求する設定を追加する。

```:RTX1220設定を追記
ipv6 lan2 rtsol max-retransmit mrt=60 mrd=300 mrc=5 
```

　この記述を追加したことにより、接続が切れても時間がたてば再び接続されるようになった。その後パラメータを調整。15分くらい粘る、という適当な理由の値です。

 ```
ipv6 lan2 rtsol max-retransmit mrt=180 mrd=1080 mrc=6 
```

# 再度接続断
　再接続されるものの、不定期に接続が切れる。どうやらNGN網から取得できるIPv6アドレスは1回線に1つだけらしい。そしてこれが接続不安定の理由と最終判断した。

![ipはひとつだけ164330.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/688e02c1-3a27-7887-e39a-f18284d9613e.png)

 　YAMAHAの技術資料中にもはっきりと記載があった。

  http://www.rtpro.yamaha.co.jp/RT/docs/ipoe/index.html

:::note info
ONU 配下、HGW 配下、OGW 配下にヤマハルーターと他の機器 ( ひかり電話も含む ) をハブ接続する構成は動作保証外です。通信が不安定となる可能性があります。
:::

　ハイ、めっちゃ不安定です。

　DHCPv6-PDでIPアドレスを払い出すことができるルーターで分岐するなら、今回のような構成にできただろうが、YAMAHAのルーターはDHCPv6-PDを受けることはできても払い出すことはできない。ここはやはりVoIPの配下にネットワークを構成するしかなさそう、という結論に至った。


# （番外）こんなのあったら良いなぁ

```:光電話加入者用オン資対応ルーター要件
LAN1:オンライン資格確認回線用
LAN2:オフィスネットワーク（インターネット接続）用
LAN3:サーバーDMZ用
LAN4:VoIP用
LAN5:WAN用
```

　オンライン資格確認を安定して稼働させるには、ルーター5台が1台に集約され、しかも最低ひとつのポートはVoIP用にDHCPv6-PDでIPv6アドレスを払い出すことができる、そんな夢のようなルーターが安価であると良い。または、NTTが医療関係施設に対してオンライン資格確認用にIPv6アドレスをもうひとつ払い出してくれればなぁ（こっちの方が現実的か）。

 　管理する業者が異なるデバイスを直列で接続するネットワーク構成としたとき、トラブル時にどちらが対応するかで揉めるし、両社とも「あっちに聞いてくれ」といういわゆる「サポートたらいまわし」になりがち。なのでネットワーク業者は心情として直列接続はできれば避けたい。オンライン資格確認は技術的、文化的な問題を抱えたまま制度化されている。