2021-06-27

MAP-E、DS-Lite、Xpass、4rd/SAM などの IPv4 over IPv6 の制限とは何か?



現在はほとんどのプロバイダー(インターネット接続業者)が IPv4 over IPv6 といわれるサービスを提供しています。



3 方式あり、MAP-E、DS-Lite、4rd/SAM です。



MAP-E と 4rd/SAM はユーザのルーターで NAT 変換します(NAT ステートレスといいます)。



DS-Lite は VNE(Virtual Network Enabler)の設備で NAT 変換します(NAT ステートフルといいます)。



なお、4rd/SAM は IPv4 と IPv6 のハイブリッド方式です。




Xpass は DS-Lite 方式の一つです。







NAT ステートレスか、NAT ステートフルかによってポート開放ができる、できないの違いがあります。



前者はルーターで NAT 変換しますので、解放できるポートに制限はありますが、制限内では開放できます。




後者は VNE で NAT 変換するためポート解放はできません。




ポート解放はルーターで設定するためです。




固定 IPv4 アドレスサービス(有償)の場合はポートの数、開放の可否に関する制限はありません。




以下は固定 IPv4 アドレスサービスでない場合(こちらが一般的でほとんどのユーザの利用形態)について記述しています。





ポート制限は、複数のユーザでおなじ IPv4 アドレスを使い、そのために使えるポート帯を分けていることによって生じます。






このポート解放の可否は重要で、この違いでインターネット上のサービスが影響を受ける場合があります。




当ブログの下記記事でそのことに触れています。





影響を受ける可能性があるのは IPv4 に対してであって IPv6 では影響は受けません。





さらに NAT 変換時の NAT テーブル数にも制限(DS-Lite は1024 個)があり、これが思わぬ落とし穴になる場合があります。







「ポート」とはなんでしょうか。




インターネットでアクセスする、ということは「宛先アドレス」と「自アドレス」が必要です。



宛先に向けてパケットを送り、自アドレスにサービス結果をパケットで返してもらいます。




このときに「サービスを規定」しているのが「ポート」です。




アドレスのほかに「ポート」を指定して「ポートに対応するサービス」を受けます。




例えば本ブログの Web アドレスは、



です。




これは「https」で「bike8615.blogspot.com」というアドレスにアクセスすることを意味します。



「https」が Web サービスを示す「ポート:443」に対応しています。



パケットは「宛先アドレスと宛先ポート:443」を設定して送信します。




結果は「自アドレスと自ポート」に向けて戻されてきます。




IPv4 over IPv6 では、宛先ポート番号は制約を受けませんが、自ポート番号が制約を受けます。




自ポート番号は IPv4 over IPv6 で割り当てられたポートのどれかに、通常は自動的に設定されます。




設定される自ポート番号は NAT ステートレスの場合はルーターで、NAT ステートフルの場合は VNE で割り当てされます。




このときに割り当てる自ポート番号が割り当て範囲外のときに正常な通信が行えません。





または、サービスサイトが戻すポート番号を固定化していて、このポート番号が割り当て範囲外のときにそのサービスを受けられません。






これが「IPv4 over IPv6 における制約」です。









【PPPoE と MAP-E 方式の事例】


引用元:http://www.jpne.co.jp/service/v6plus/








かって主流であった PPPoE は IPv4 に対してがほとんどで、IPv6 による PPPoE は皆無といっていい状況です。




これは IPv6 でサービスするサイトが少ないためです。



IPv6 でサービスするサイトは IPv4 もサービスしている場合がほとんどです。







国内の場合、NTT 東西のフレッツ網(フレッツ網自体は IPv6 網)が大半で、プロバイダーはこのフレッツ網とインターネットの橋渡しをしています。



(ほかには独自の網でサービスしている KDDI、nuro、CATV 事業者などがあります)

 



フレッツ網における IPv4 インターネットへの橋渡しの主流が PPPoE でした。




ところが、PPPoE プロバイダーとフレッツ網の接続点(前図の網終端装置)の帯域制限から混雑時に著しく速度低下する問題があります




一方、IPv4 アドレスの枯渇問題から IPv6 ができたわけですが、インターネットサービスはまだまだ IPv4 に依存しています。




そこで IPv4 サービスと IPv6 サービスを混在させる方式として IPv4 over IPv6 という技術が考え出されました。




PPPoE(IPv4)と IPoE(IPv6)の混在型も可能ですが、まだ IPv6 でサービスするサイトが少ないため、実質はあまり使われていないと思われます。




しかも混在型は PPPoE で IPv4 サイトをアクセスする際に網終端装置の帯域制限の影響を受けて、混雑時のアクセス速度に支障をきたすことには変わりがありません。






IPv4 over IPv6 方式は IPv6 パケット内に IPv4 パケットを包含し、これを VNE 事業者の設備で IPv4 または IPv6 パケットでターゲットのサイトにアクセスします。




戻りパケットは行きと逆の処理を行ってユーザに返します。






フレッツ網(IPv6)自体は帯域制限がありませんので混雑時間帯でも速度低下は起こりにくいのです。




VNE が(プロバイダーとの契約により)帯域制限することはあります。





IPv4 over IPv6 サービスは VNE 事業者を介して行われ、プロバイダーは VNE 事業者と契約することでユーザーにサービスを提供しています。




OCN や Biglobe のように自ら VNE を運営しているプロバイダーもあります。






さて、IPv4 over IPv6 で問題になるのは「ポート解放」ができるかどうかと、解放できるポートに制限があることです。



NAT ステートレスである MAP-E、4rd/SAM は制限がありますがポート解放できます。




これによって、ポート解放制限の影響を受けない PPPoE 方式との違いで、できないことが出てきます。





ポートが決まっているサービス、例えば Web を運営することや(80 または 443)、IP 電話(できるものとできないものがあります)、ゲーム主催者などが影響を受けてできなくなるのです。




VNE から割り当てられたポートのどれかに変更してできるものもあります。



例えば割り当てされた ”6789” で Web を運営している場合、



  https://自アドレス/:6789



とすればアクセスできますが、不特定多数の人はあなたの Web サイトを ":6789" を付加しないとアクセスできないことを知りません。

 


結果的に「できないことと等価」です。





自宅ルーターに VPN を張れるようにする場合、OpenVPN や Wireguard VPN は割り当てられたポートのどれかに変更すれば実現できます。




VPN は自分もしくは限られた人に対してできるようにするサービスですから、ポート番号を変更しても実質的に問題はありません。



しかし、おなじ VPN でも IPsec や PPTP は ポート変更できませんので実現できません。





IP 電話の中には IPv4 パケット自体の宛先/受取ポートを固定化(ポート 5060 など)しているものは使えません。




IP 電話は、パケット自体のポート番号ではなくパケットのデータ部で SIP ポートを規定すれば問題ありません。



しかし、パケットのポート番号を 5060 に固定していると割り当てられたポートの範囲外となって使えません。



いくつかの IP 電話は「パケット自体のポート番号を 5060 などに固定している」ものがあり、この場合は使えません。




@nifty IP 電話が使えなくなる代表例です。





おなじ IP 電話でも Smartalk、050 PLus、Brastel、G-Call050 などは影響を受けませんのでそのまま使えます。








DS-Lite は NAT ステートフルですから IPv4 でポート開放ができません。




IPv6 ではポート制限はありませんから IPv6 でサービスできる場合は IPv6 にする手があります。




例えばウチは現在は Xpass(DS-Lite 方式)です。



以前は V6プラス(MAP-E 方式)でしたが乗り換えています。



Xpass の場合、IPv4 ではポート開放できません。

 

 

 

 

 

Wireguard VPN で自宅ネットワークに外から入れるようにしていますが、そのために IPv6 でポート開放しています。




Wireguard Client であるスマホや Macbook Air は、IPv6  で開放したポートを使って自宅ネットワークに入れるようにしてます。




つまり、IPv4 で制限を受けても IPv6 での制限はありませんから、仕組みを理解すれば大抵のことができます。






IPv4 での制限をなくすには次のような手段があります。



 ❶ PPPoE を併用する


   混雑時の速度低下がある



 ❷ 固定 IPv4 アドレスサービス(有償)を受ける


   速度低下はないが、別途利用料が発生する


   また、このサービスを行う事業者は限られる












2021-06-22

Softphone・ブラステルの冒頭のアナウンスをスキップする






ブラステルは大変重宝しており、イエデンに使っているほどです。



発信時に通話先がブラステル以外の場合、冒頭に



 「◯◯分ご利用いただけます〜〜〜〜」



というアナウンスが流れ、煩わしいと思いませんか。






この件はブラステルにはやめて欲しいと何度もお願いしましたが、一向にやめてくれません。



ブラステルの見解は公衆電話から利用する人に便宜を図っている、の一点張りです。



ならばマイアカウントページでアナウンスを使う/使わない設定をできるようにすればいいでしょう、といってもいまだに対応されていません。




広告まで流れることがあり、これは電話、またはメールでやめてもらえますが、無料発信でもないのに広告をアナウンスする姿勢が理解できません。







ブラステルがやってくれないならば、自分で回避するしかありません。






Softphone(Acrobits)には「プリフィックス」以外にも「ポストフィックス」という、相手電番の「後ろ」に数字や記号を付加する機能があります。






ブラステルから発信するときにダイヤル直後に「****」とすると冒頭の「煩わしいアナウンス」を回避できます。





これを「ポストフィックス」機能を使って回避しようというわけです。





この冒頭のアナウンスを回避するために "05068(ブラステルの電番帯)" で始まる番号以外への発信には ",****##" を付加する設定でこのアナウンスを自動的にやめることが可能になります。




プリフィックスを扱える電話アプリやソフトフォンは多いのですが、ポストフィックスを扱えるのは Softphone(Acrobits)くらいです。







[設定] → [アカウント] → [対象とするアカウント] → [高度な設定] → [番号の書き換え] と進みます。










右下の [+ Add rule] ボタンをクリックします。











まず、[条件] の [+] マークをクリックします。









現れた [条件タイプ] の 3番目「次の項目からは始まりません」をクリックします。









この項目に [05068] を設定します。












次に [アクション] の [+] マークをクリックします。










現れた [アクションタイプ] の 3番目「追加する」をクリックします。




この項目に [,****##] を設定します。



  ","  :ポーズ(一つで 0.5s のポーズ)

  "****":アナウンス・2フレーズを飛ばすおまじない

  "##" :入力完了(Enter と同じ意味)



ポーズの個数や、"#" の個数は実際に発信テストをしてアナウンスがうまく回避できるタイミングを調整してください。











端末の [戻る] で設定した内容が次のように確認できます。







 

以上で設定は終わりです。




あとは普通に 0312345678 のように発信すれば後ろに ",****##" が付加されてアナウンスを回避できます。




ブラステル同士はアナウンスはもともと流れませんので、発信先がブラステル番号(05068 で始まる番号)の場合は付加するのを除外しています。






My 050 アプリは Softphone(Acrobits)をベースにカスタマイズされたブラステル専用アプリです。



[設定] → [環境設定] → [番号の書き換え] で同様に設定することができます。






なおブラステルの場合、残高表示を Softphone(Acrobits)でもできます。




[設定] → [アカウント] → [対象とするアカウント] → [高度な設定] → [ウェブサービス] ⇨ [カスタムバランスチェッカー] の [URL] 欄に次の設定をします。



https://cloud.brastel.com/bcs/bcs-web-proxy/cloudphone/balance?username=ユーザID&password=パスワード










【注意事項】残高表示をする場合の注意事項



上の "https://cloud. 〜〜" 自体はインターネット上を平文で流れますので、誰かがキャプチャーしないとも限りません。



キャプチャーされるとアカウントを乗っ取ることが可能で、悪意のある誰かがあなたのアカウントで高額発信通話する可能性があります。





高額発信通話は、アカウントを乗っ取りした誰かが、電話局と結託してバックマージン稼ぎをする、という手法です。



主に海外の、汚職がはこびっているような国の電話局を舞台に行われています。





これを防ぐには残高表示しない、または高額発信通話されたとしても無制限にチャージできる仕組み(カードから自動チャージ)の利用をやめることです。





そうすれば最大で現在残高の被害ですみます。




幸い、私はまだこの被害には出くわしていませんが、こういうリスクを考えてコンビニチャージで、最大 2,000 円以上はしません。




万一被害にあっても 2,000 円(最大 680 分通話可能)で済みます。



万一被害にあったら、ブラステルのマイアカウントにログインしてパスワード変更します。












2021-06-21

Softphone(Acrobits)周りの見直し



Softphone(Acrobits)で安定した待受のためにルーターと、スマホ・FCM(Firebase Cloud Messaging)および Softphone の NAT keep alive を見直ししました。



「標準着信設定(非プッシュ着信)」でディープスリープ中の着信逃しがなくなりました。




FCM はプッシュ通知を受け取れるようにする Android スマホのメカニズムです(iPhone にも同様機能があります)。



これによって LINE / Whatsapp / Mail など通知をリアルタイムに受け取ることができます。



Softphone もまた然りです。



原則は次の考え方です。



Router udp timer > Google FCM interval timer >  NAT keep alive timer




見直し前の各要素の値は次のようになっています。



❶ ルーター・RTX830 :udp はデフォルトで 30 秒

❷ Google FCM interval:29 分

 (キャリアのモバイルおよび WiFi のインタバル)

❸ NAT keep alive   :30 秒



見直し後はそれぞれ、360 秒 / 5 分 / 30 秒 としました。




ルーターの RTX830 は、次のコマンドで設定値を変更します。


 ip filter dynamic timer udp-idle-time=360 dns-timeout=10



udp タイマーはデフォルトが 30 秒(tcp は 3600 秒)だったのを 360 秒に、DNS のタイマーもデフォルトが 5 秒だったのを 10 秒に設定し直しました。



ルーターについて、NEC Aterm は udp(300 秒)/ tcp(3600 秒)のタイマー値を変更できますが、バッファロールーターはできないようです。 




Google FCM interval については WiFi / LTE ともに Heartbeat Fixer for GCM アプリで 5 分(推奨値)に設定します。



NAT keep alive は Softphone(Acrobits)の設定はデフォルトで 30 秒ですので、これは変更していませんがバッテリー消費に影響するようであれば 60 〜 90 秒にしてみます。




ちなみに Softphone(Acrobits)は Push 着信は使わず、標準着信設定(非 Push 着信設定)です。



Push 着信の方が着信確実性とバッテリー消費上は有利ですが、イエデンをスマホにも登録する関係上、標準着信設定しています。



イエデン は ATA(Analog Telephony Adapter)に通常の電話機を接続しています(非 Push 着信です)。



スマホにもイエデンのアカウントを登録できますがともに 非 Push 着信でなければいけません。



そうしないと方通話や、着信不良を引き起こすからです。



同一アカウントを複数デバイスに登録できるのはブラステルならではの非公開機能(公式サポート外です)です。



SMARTalk や 050 Plus などの他の IP 電話ではこういう芸当はできません。







2021-06-16

Android11 で *#*#4636#*#*(スマートフォン情報)のショートカットを作成する

 

ショートカットを作成するアプリとして QuickShortcutMaker が有名ですが、Android11 ではうまく機能しません。



また、4G LTE Switcher もうまく動作しません。




そこで "ショートカット+" を使って 4G LTE Switcher と同等のショートカットを作成してみます。









”ショートカット+” アプリを Google Play Store からインストールします。








インストールしたらこれのウェジェットを長押しし、ホームの任意の場所へドラッグします。



すると下図のような ”ショートカット+” の画面に移ります。









上の画面の「アクティビティ」をクリックすると次の画面になります。








検索アイコンをクリックして「スマートフォン」と入力します。






3つ目の「スマートフォン情報」が求めるアクティビティです。



これをクリックします。








「起動してみる」をクリックすると次のような、目的とする画面が表示されます。







「戻る」ボタンで一つ前の画面に戻ります。



「作成」をクリックします。




最初にウェジェットをドラッグした位置にショートカットが作成されます。







あとはこのアイコンをクリックすればいつでも「スマートフォン情報」画面に移ることができます。



電話アプリで「*#*#4636#*#*」とダイヤルしたことと等価になります。





例えば「優先ネットワークの種類を設定」で "LTE only" や "NR/LTE" に設定変更できます。




楽天モバイルの場合は AQUOS sense5G では "NR/LTE" にします。