HimaJyun珍しく完全な解決とは言えないパターンの記事プロバイダからIPv6アドレスが降ってきたのでおうちサーバをv6接続に対応しようとしたら、IPoEは半固定とかいう謎仕様だったのでそれの対策を考えました。スポンサーリンクちなみにこの記事の内容は「2017/04/19」の情報です、未来の人達の世界ではこの通りではないかも知れないので確認しながらどうぞ。「アドレス」と書いてるが、厳密にいえばプレフィックス。このページに来る人は既に該当の問題にぶち当たった人だと思うが、一応説明しておく。NTTでIPoEのIPv6接続を行うと、そのIPアドレスは「半固定」となる。(これはNTT側の制限に起因する感じ?なのでプロバイダがどこであれ関係ない)AU光のIPv4と似たような感じで、殆ど固定だが稀にアドレスの変動が起こるという代物。なると困るのはサーバで、IPが変わってしまうので接続できなくなってしまう。「固定だと個人が特定出来てしまうだろ!!」という固定IPの弱点と、「動的だとサーバが建てられないだろ!!」という動的IPの弱点、その両方を足し合わせたような素晴らしくアレな仕組みAAAAレコードの書き換え当然ながらに発生する難点の1つめがこれアドレスが変動した場合に、それに合わせてDNSに登録されているAAAAレコードを書き換える必要がある。この辺りはv4時代に培われた動的IPでサーバを公開するノウハウが応用できるかと思う。キャッシュサーバのTTL切れ(浸透とか反映とかいうと某教授から殴られる)に少し時間が掛かるが、これはどう頑張っても仕方のない事なので多少は目をつぶるとする。(DNSが許すならTTLを縮めておけば少しはマシかと)パケットフィルタ設定の書き換えv6特有の「クソ面倒ポイント」がこれ。IPv4まではルーターがパケットを待ち受け、NATで振り分けしていた=実際にグローバルIPを持つのはルーターなのでAレコードの書き換えで済んでいた。これがIPv6では「そこら辺の石ころに割り当ててもまだ余る」くらい広大なアドレス空間が使えるため、各デバイスにグローバルIPが付き、ルーターはどのグローバルIPでどのポートを通すかというフィルタ設定を行うようになった。それにより、変動が発生した場合はAAAAレコードだけではなく、ルーターのパケットフィルタ設定も書き換える必要がある。それが自動で出来ないと詰む。(民生用ルーターは基本出来ない、YAMAHAとかCiscoなら出来そう)ネットワークがサーバ専用になっている(DMZとか?)なら、ルータ側で全てのパケットを通してから各サーバのiptablesでフィルタすれば良いと思うが、私用のPCなんかもある場合はセキュリティの観点からフィルタなしはよろしくない。v4でいうNAT的な事がv6でも出来れば楽ではあると思うんだけど、そんな事可能なのかな?IPv6/IPv4フォールバックの遅延DNSにAAAAとAを両方指定して解決する(AAAAがダメな時にAにフォールバックされる)ならば苦労しないの。確かに可能ではあるんだけど、現実的ではない。AAAAとAが両方返された場合、クライアントは優先的にAAAA(v6)で接続しようとする。繋がらないので接続待ちとなり、タイムアウトしたらA(v4)に切り替わる。何が問題かというと、この「タイムアウト」がとてつもなく長い事。手元のFirefoxで試してみた所、タイムアウト待ちが50秒、つまり、50秒待たされた後にページが表示される。タイムアウトの秒数はクライアント依存、再接続するかどうかもクライアント依存これは実質繋がらないと言っても良い、なので使えない手法となる。NTTのIPv6で最初の方に起こっていたのとほぼ同じ問題(インターネットに出られないv6グローバルアドレスを付与したせいでDNSとかでAAAAフィルタをする羽目になったアレ)を自発的に作ったような物。対策これだけv6対応が叫ばれている時代に「半固定だからやりません」とか言ったら磔獄門は避けられまい。色々な対策を考えてみたので参考までにどうぞ。プロバイダを変える札束ビンタは世界一ィイ!!固定IPv6アドレスを発行してくれるプロバイダに変更(もしくは追加契約)する手法。この場合のデメリットは当然ながらに「お金が掛かる事」「契約周りの作業が必要な事」それから、フレッツ光+固定IPv6は現状PPPoEとなるので、「PPPoEセッションを消費する事」の3つ当然ながらIPoEのメリット(速度とか)はない、理論的にはNAT変換がない分v4よりか早くなりそうだが、その辺りは分からない。PPPoEでも半固定のプロバイダがあるので要注意どのプロバイダがどう対応しているかは最後の方でまとめている。DDNSを使うIPv4の時と同じ戦法で、DDNSを利用してAAAAレコードを書き換える。apexを使わないとかなら悪くない方法かと思う。個人的にCNAMEは1回の名前解決でCNAMEそのもの->CNAME先と2回のクエリを飛ばさないといけないので好きではない。Route53の機能を駆使してどうにかする戦法、1つめ。Route53の提供しているAPIを利用して、変動を検知した際にAAAAレコードの中身を書き換える、という訳だ。要はRoute53でDDNSを作ったような感じかな?ルータのパケットフィルタ設定を書き換える必要があるのはお忘れなく♡(2回目)Route53を使う(切り離し)ルータのパケットフィルタ設定が書き換えられそうにないので考えたもう一つの方法。Route53のヘルスチェックやAPIを利用して、変動が起こった際にAAAAレコードを返さないようにする(切り離す)こうすることで、クライアントにはAレコードだけを返し、最初からv4で接続させるようにする。これでIPv6/IPv4フォールバックの遅延問題をクリア出来る、その後管理者が確認してv6アドレスを再度有効にする。完全自動化とはいかないが、悪くない方法だと思う。切り離し中はIPv6でしか接続できないクライアント(v4アドレスを持たないネットワーク)から接続できなくなる。(現状v4での接続手段を持たないクライアントは少ないだろうが)ダチョウアルゴリズムそもそもこの「変動」はあまり頻繁に発生するものではない。(数ヶ月に一回程度という書き込みを見かけたが、手元で観察している限り2017/08~2019/02まで一度も変動していない)数年の内の数時間(最悪でも自分が寝て起きるまでの半日)くらいのダウンは仕方ないとして諦めるのがこの手法。(というか数年に一度くらいなら他の要因での鯖落ちの方が圧倒的に多い)ご飯を食べて、トイレに行って、ゲームを一通り楽しんだうえで、変動に合わせて設定を変更する作業を行う。)諦めた際に影響があるのはv6で接続しているユーザ、v4接続のユーザには問題がない。ノーコスト、これが最大のメリット、DNSにAとAAAAを両方登録しておけば完了。可用性を重要としていないサーバ、もしくはクライアントにIPv6/IPv4フォールバックでの遅延がないならば、ふざけているように見えて意外と有力候補ただしv6の普及が進むにつれてダウン中に接続できないユーザが増えていく、という問題は当然ながらにある。apexを使わない、CNAMEでも良い->DDNS+CNAMEなにもしたくない->ダチョウアルゴリズム寝てたい->v6対応は行わず、NTTが固定になるのを寝て待つこの事を分かりやすく説明すると「キチンと対策せずにIPv6に対応すると却って可用性が落ちる可能性がある」ということになる。v6だとv4+固定IPで当たり前に出来ていたことが出来ないので、可用性が落ちる要因が増える。加えて、殆どのIPv6クライアントは同時にv4にも接続する仕組みを持つため、サーバとしてはv4だけでも接続出来てしまう。さくらのVPSニュース)「IPv6に対応しない」方がコストも掛からず、難しいことも考えずに済むという本末転倒で皮肉な感じの話サーバが対応しないと意味がない「インターネット」でこれはどうか、って気がする。固定IPv6なプロバイダ固定IPv6のプロバイダ、IPv6自体があまり普及していない事も相まって選択肢が殆どない。個人向けで固定IPv6を謳っているのは現状インターリンクだけ?ただしインターリンクも長期間接続がないと変動する事があるらしい、これは長期間「接続がないと」なのでサーバには無関係な話だね。Nextの方インターリンクはサーバ向けのオプションが多くて個人的に少し気になっている。Bizが固定を謳っている。法人はこんなどこの馬の骨が書いたかも分からないような弱小個人ブログは読まないだろうから雑に解説すると以下のような感じ。IIJはIPv6専用で、要らないv4アドレスが付いてこないので既存のIPv4環境に追加で入れるのには良いかも?(逆に言えば、v4も欲しい時には不都合がある)NUROの方は「移転や局舎の変更があった場合、固定IPv6アドレスは変更されます。」なんて但し書きがある。法人プランである以上、勝手に変わって勝手に繋がらなくなるような代物ではないとは思うが......(NUROは帯域保証が付いているというメリットもある)各プロバイダのサイトは以下の通り。Biz余談:ルーターのデフォルト設定が危ない?今回のような「NTT+IPv6(IPoE)」の場合にルータのデフォルト設定が「クソ危ない」事がある。このような半固定状態でユーザーから「VPN繋がらないんですけど?」とか言われるのが嫌だったのか、NTTから貸し出されるルータはデフォルト設定で「NGNで折り返したパケットを全て素通りさせる設定」になっている。いうことかと言うと、NTT西なら西、東なら東の「他の加入者」から飛んできたパケットはルータを素通りする(西と東でのパケットは遮断されるっぽい?)なので、同じNGNに居る「悪い奴」がポートスキャンして攻撃したり出来るわけだ(相手に悪意がなくても、感染したマルウェアがこっちを狙ってくるとか)対策としては、ルータの設定画面に入り、「IPv6パケットフィルタ設定」にある「IPv6セキュリティのレベル」を「高度」にすればNGN内からのパケットも遮断できる。基本的に「高度」にして困る事はないので、明確な理由がない限りは遮断しておいた方が安全だと思う。(ちなみに、iptablesはIPv6の場合ip6tablesになり、別物扱いなのでこっちはこっちで遮断しておかないとポート露出狂になる)どうしよう?うちは電話があるせいでルーターが下手に弄れない(つか電話一体のルーターマジでやめてくれ、NTTさんよ)将来的には固定になるんだろうか?未来永劫この半固定とかいういまいちな仕組みのまま提供するとかごめんだ。変動はそう頻繁に起こる訳ではないのでダチョウアルゴリズムか、もしくはRoute53での切り離しを考えている。サーバースポンサーリンクB!LINEへ送る関連記事jpドメインをお名前.comからJPDirectに移管した新年ですが新年っぽい記事など書けないので普通の記事を書きます。【systemd】StandardOutput=fileはログをファイルに出力できるけど追記されないsystemdで作ったserviceのログ(標準出力)をファイルに出力したい!み......続きを読む→FileZillaをFFFTPっぽく使うWebマスターのみなさん、こんにちは。僕も所謂、同業者って奴です、よろしくお願......続きを読む→ドメインレジストラ7社使ってみたので比較レビューこんにちは、生きてます。世の中には色々なドメインレジストラがあります。日本だけ......続きを読む→[Zabbix]センサーの温度データを取得するZabbix(厳密にはLinux上で動作するzabbix-agent)には温度セ......続きを読む→PREV[検証]MinecraftサーバをHDDで動かしても問題ない?NEXT[比較]ZabbixとMunin、私に適しているのはどっち?ナカのヒト:HimaJyun​散って美しいのは桜だけです、情報はまとまっていた方が美しいのです。