CategoryIPv4とIPv6どちらでのアクセスか表示どうも、imo@入江です。IPv6が普及してくれればいいと思っています(突然)。いうことで、サイト右側のウィジェットに、IPv4、IPv6どちらでのアクセスか表示するようにしてみました。取得できるリモートアドレス中に「:」があるかで判断しています。あればIPv6、なければIPv4として表示。IPv6でのアクセス環境について、このサイトの回線はNTT東日本のフレッツですが、v6プラスの固定IPなのでIPv4、IPv6含めてネットに出られるようになっています。網内折り返しでアクセスすることになるので双方のISPを通らず繋がることになると思います。レイテンシや転送量の関係でもメリットが大きいです。本当は西日本のフレッツからもNGN網内接続できればいいのですが、東西でNGNは繋がってないんですよね...管轄も東西で分かれているので仕方ないですが、NGNの相互接続されることを願っております。そんな感じで、変なことをしてみました。自分のネット環境がIPv6でネットに出られているかの確認にも使ってください。ヤマハルーター編どうも、imo@入江です。前の記事からつながるお話です。読んでない方はぜひ導入の紆余曲折からどうぞ→https://lowfreq.info/archives/23625サーバー側ネットワークを11/3にv6プラス固定IPに変更した際、IX2105だと160Mbpsくらいで頭打ちというお話をしました。繋がりましたしレイテンシもいい。その速度では物足りなかったのです。いうことで、RTX830買ってきました。こらえ性がないから仕方ない。RTX830はARM系1.33GHzのデュアルコアCPUです。PowerPC系とは単純な周波数での比較はできませんが、webで他の方の記事を見る限り速度出そうだなーと。ヤマハのサイトにIPIPトンネリングとしてコンフィグ例が載っています→コンフィグ例ですが、こちらについてはIPv6パススルー設定がありませんので他の設定とミックスして噛み砕く必要があります。他の設定について、v6プラスをご利用の他の方がいくつか設定例出してくださっていますが、オープンサーキットさんがそのものズバリな設定例を記載してくださっています。https://www.open-circuit.ne.jp/isp/settei/v6direct-rtx1210-ip1.html設定例の中の”v6direct-rtx1210-config-ip1-filter.txt”を元にするのがいいでしょうか。RTX1210向け設定なのでLAN3がWANになっています。RTX830ではLAN3→LAN2に読み替えてください。プレフィックス変更時、IX2105はddnsコマンドで更新をかけていましたがRTX830には汎用のddnsコマンドはありません。そのため、Luaスクリプトで更新をかけることになります。これは上記ヤマハサイトのほうのコンフィグ例を参考にするのがいいと思います。私はRTX1100以来のヤマハルーターだったのでなかなか思い出せず勝手が掴めませんでした。IX2105と比較したとき、現在のヤマハルーターにはコンソール上でコンフィグをまっさらにして設定する機能はないようです。configurationを入れておくと何もない状態に設定を入れることができます(これがないと追記になります)。getでコンフィグを吸い出したときには記載がないので、覚えておくと便利です。設定して運用してみると、夜中1時前で下のスループットが出ました。本当にフレッツ回線なんですかね...速度もですがPINGが2msというのが驚愕です。今まで一般回線で2msはNUROでしか見たことありません。これがv6プラスの実力なんですね。CPU使用率についてもIX2105とは大きく違う挙動です。RTX830では、上記測定中でもCPU使用率コア1-63%、コア2-14%が最高値でした。IX系と比べて負荷はかなり低いです。サーバー公開用にフィルタやnat設定も入れてこれなので、余裕がありますね。いうことで、自宅回線の安定化、高速化もひと段落しました。新しいルーターは設定してると楽しくなります。commentsv6プラス固定IPのあれこれどうも、imo@入江です。先日告知しましたIPアドレス変更は本日朝に完了しました。ご協力ありがとうございました。現在フレッツ光の回線を利用していますが、POIに起因する混雑時間帯のレイテンシ悪化が酷かったので根本的な解決をしたかったのです。そこでJPNEのv6プラス固定IPサービスを利用することにしました。設定の際にあった紆余曲折を備忘録として書き起こしておきます。・JPNEのBRに対してトンネルを張って利用するというものです。■ルーター側のコンフィグ利用したのはNECのIX2105、今まで別ISPのPPPoE終端で利用していたものです。記載コンフィグの対象ファームバージョンが記載されていないのでコマンドリファレンスと見比べる必要があります。(後述)>設定ガイド当初利用した個体のファームは9.1.10一部相違はあるもののだいたいは設定ガイドのコンフィグで通ります。bothだけは通らず。bothはファーム9.2台から実装されているようで、9.1台にはv4とv6に同時に転送する機能はないようです。一部書き換えることで9.1.10でもトンネル接続可能です。bothが別行への記載に変更になっていました。以上から、設定ガイドのコンフィグはファーム9.2~10未満が対象のようです。あと、ISPから提供される情報にインターフェイスID、IFIDがありますが、IFIDの表記がxxxx:xxxx:xxxx:xxxxとなっていることがあります。de:ad:be:ef:de:ad:be:efのように書き換えて設定ください。11/4追記:9.1.10での運用について当初うまくいっていなかったのですが、解消できたので書いておきます。下の5秒遅延-に関するところです。bothがない状態だと、IPv4でのDNS問い合わせが不可能なのでタイムアウトまで待っていただけだったんですね。当初AAAAレコードだけかと思っていましたが、tcpdumpしてよく見てるとAも引けていませんでした...コンフィグに他にDNS設定を書いていないので、当たり前の挙動です。1.1.1.1を追加して平穏が訪れました。1.1.1.1はCloudflareが提供しているパブリックDNSです。DNSでも好きなのを入れていいと思います。サーバー系の設定にパブリックDNSを入れる是非については少し悩みましたが、他にあてもないので。利用目的がwebサーバー公開なので、そこでも気になった点を。RHEL6/CentOS6以降ではDNS問い合わせする際、標準ではAレコードとAAAAレコードの問い合わせに同じソケットを利用するようです。そのため、一部ファイアウォールでは後の応答を遮断してしまう模様。遮断が入っていたのかタイムアウトが発生しページ表示が5秒程度遅延していました。従来の問い合わせ方法を使うにはnmcliで下記を投入します。networksingle-request-reopenというのがリクエストごとに別のソケットを開くオプションになります。/etc/resolv.confを編集する方法もありますが、CentOS7の場合はNetworkManagerがオーバーライドしていくので上記nmcliのほうが良いと思います。■使用感ひとまず結果から。記事公開日に数回だけチェックした数値なので参考程度に。138/143Mbps正直なところ、PPPoEでも平時は問題ないのです。速度も出ますしPINGも悪くありません。POIにトラフィックが集中する混雑時には速度が大きく下がります。実際のところ、上の計測結果は以前と比べるとかなりマシなほうでひどい時には下り10Mbps切ることもありました。レスポンスも悪化するので、その分が応答時間に乗ってきます。速度も相まってもっさり感じることが多くなります。v6プラス固定IPだと速度、PINGともにほとんど変動しません。PINGが一定かつ短いのはサーバー公開用途として理想的です。夜間にクライアント用途として利用しても、サイトへのアクセスは快適です。v6プラスについても終端のBRが混雑すると遅くなる可能性はありますが、POIと比べるとJPNE内部の機材なので対処しやすいのではないかと。IPv6でトラフィックをIPoEに逃がすサービスをしていますが、その意味は大いにあると思います。ところで、上記の速度結果で、v6プラスが遅いことに気づくと思います。これはIX2105のCPU性能によるものです。上記の速度計測の際に確認すると、v6プラス時はCPU使用率が100%に張り付きます。IX2105はPowerPC系の400MHzシングルコアなので、このCPUの限界ということですね。4-over-6の処理はPPPoEより重いようです。昨年にCPUが800MHzになったIX2106が発売されているので、そちらだとさらに高速だと思います。ちなみにファームバージョンによっても速度差があり、計測すると9.1.10のほうが速いです。160Mbps程度出ます。先に書いたDNSまわりの挙動があったので私は今のところ10.0.14で運用入れていますが、9.1.10でもコンフィグ見直せばいけると思います。2台とも中古で入手した個体なのでその間のファームで確認できないのです。そんなこんなで、インターネットへの接続方法としては宅外のボトルネックを極力排したものになったかと思います。GPSでNTPサーバーどうも、萌乃です。PiとGPSモジュールを組み合わせてNTPサーバーを構築してみました。GPSからの信号を利用することでUTCに対して数百ナノ秒の精度で時刻を保持できます。Piを使うとわりと簡単に作れるので良いなと思う次第です。B+おなじみのrpiです。・4GB以上のmicroSDカードこれはお好みで。4GBだとカーネルリビルド時にギリギリだったので、8GB以上が良いかもしれません。GPSモジュールaitendoで購入(http://www.aitendo.com/product/10255)アンテナも付属していますので窓際ならこれだけで受信環境が揃います。動作電圧3-5v、信号がTTLレベルで出て使いやすいですが、PPSがLEDに接続されているので3番ピンにリード線をハンダ付けして信号が取り出せるようにしておきます。ピンヘッダを付けておくと便利です。・GPSアクティブアンテナaitendoで購入(http://www.aitendo.com/product/2421)ベランダにアンテナを出したかったので購入。上記アクティブアンテナの場合、モジュール側がU.FL、アンテナ側がMMCXなので変換する必要があります。自分はケースを加工して搭載できるようにしました。今回はrpi標準のraspbianを使っています。(2014/12/24版で動作確認しています)http://www.raspberrypi.org/downloads/からシステムイメージを入手してmicroSDに書き込んでおいてください。upgraderpi-updateで内容を最新にしておきます。GPSモジュールはrpiのttyAMA0に接続することになります。標準ではttyAMA0でシリアルコンソールが使えるようになっているため、これを無効にします。triggerhappyでtriggerhappyを無効に他の用途でもrpiを使うなら最低限このくらいですが、自分のようにntp専用にしたいならサウンド関連は無効にしても良いかもしれません。/etc/modulesにsnd-bcm2835がいます。ここまでやったら一度シャットダウンしてGPSモジュールを接続。自分はこんな感じに入力しています。■ひとまずGPSモジュールからのデータを見てみるPPSは一旦置いておいて、GPSモジュールから出てるデータを見てみます。gpsd-clients今のところはgpsdを自動起動せずに手動で立ち上げます。-sするとGPSの捕捉状況が見られます。時刻同期だけなら多分もっと少なくてもいいです。余談として、gpsdを経由すれば簡単にPPSに同期したGPSロガーも作れそうですね。実用に耐えうるかはともかく、そのうち作ってみます。※2014/12/24公開のraspbianカーネルは標準でPPSに対応しています。PPSの信号が利用できるようにします。追加(ピン番号は環境で変更してください)、/etc/modulesにpps-gpioを追加します。/dev/pps0でppsが拾えているか確認。表示し続けるのでCtrl+Cで止めます。■カーネルのリビルド※2014/12/24公開のraspbianカーネルは標準でPPSに対応しています。カーネルリビルドしなくても数マイクロ秒の精度は出ます。ナノ秒オーダーの精度を出すにはdyntickが邪魔になるので、tickの方法を変更してカーネルをリビルドします。必要なものをインストール。screen今動いているカーネルコンフィグを取得するとき、sudoでもエラーが出たのでrootログインできるようにしておきます。rootでパスワード作成。再起動しrootでログインして作業再開。menuconfigカーネルメニューにて、まずは現在の設定をロードします。最下部のloadから.configをロード。PPSとtick周りの設定をします。GPIOも有効にしておきます。Supportを有効に。ticksを選択します。ここまで終わったら再度メニューのトップに戻り、saveから.configへ再度書き込みます。私はこれをやり忘れて1日無駄にしました...さてビルドします。modules_installmakeに10時間くらいかかります。ext4のジャーナル破損が起こることがありますが、その際にはmicroSDの故障ないし相性なので別のカードに変えてみてください。カーネルイメージ化します。../../linux/arch/arm/boot/zImageこれでkernel.imgが出来上がります。rpiにカーネルをインストールし、起動カーネルを変更します。/boot/kernel_tick.img/boot/config.txtにkernel=kernel_tick.imgを追記します。再起動すると作成したカーネルで起動します。■NTPのビルド標準でインストールされているntpはPPSに対応していないので、ソースからビルドします。sudo打つのが面倒だったのでrootでログインしています。http://archive.ntp.org/ntp4/ntp-4.2.8.tar.gz1/31時点ではntp-4.2.8p1-RC2.tar.gzが最新です。必要に応じてhttp://archive.ntp.org/ntp4/を確認してください。ntp-4.2.8./configure--enable-ATOMはなくても対応するようです。--enable-linuxcaps含めて入れたほうが精神衛生上良さそうな気がします。installこれで/usr/local/bin/と/usr/local/sbin/にバイナリが生成されます。このバイナリを今まで動いていたntpと入れ替えます。startこの方法だと、今までのからntp.confや起動スクリプトが流用できるので便利です。今年の7/1にうるう秒の挿入があります。本来であればその情報だけで対応できます。GPSからのその情報を使うかはクライアントごとにまちまちなので、別のアプローチで対応しておきます。アメリカのNISTでうるう秒のリストが公開されていますのでそちらを使います。/etc//etc/はntp.confと同じところに置きたいと思ったからなので、コピー先はお好みで。/etc/leap-seconds.listを追記します。ntpdを再起動すると適用されます。ここからNTPの設定に入りますが、NMEAのデータgpsd経由で送るか、ntpdで直接管理するかによって設定が異なります。gpsdを経由せずにntpdで直接管理したほうが精度が良いですが、他のソフトから扱えなくなります。■NTPの設定(gpsd編)NMEAデータをロギングしたいなど、他にも使う際にはこちらです。共有メモリを経由するので、NMEA側のジッターが大きめな気がします。gpsdの自動起動を設定します。gpsdから出てくるメニューで自動起動をオン、参照ポートを/dev/ttyAMA0、ソケットを/var/run/gpsd.sock(標準)に。/etc/ntp.confの現在のserver行をコメントアウトしてから、下記設定を投入します。GPS他の設定はお好みで。time1はPPSに対するNMEAの遅延時間で、単位は秒です。私の環境では141ミリ秒くらいでしたが、一旦0で動かしてオフセットを見ながら適宜調整したほうがいいかもしれません。この設定で動かすと、下のようになります。■NTPの設定(ntpd編)私のようにNTP専用機にするぜ!という人はこちらです。ntpdが直接NMEAデータをつかむので安定しますが、他で使えません。/etc/udev/rules.d/10.pps.rulesというファイルを作成します。SYMLINK+="gpspps0"ntpdはユーザー”ntp”で動作するので、ユーザー”ntp”をdialoutグループに追加しておきます(標準ではグループに属していません)。ntp再起動すると/dev/gps0と/dev/gpspps0という2つのデバイスができます。このデバイスをntpdで読んでいきます。/etc/ntp.confの現在のserver行をコメントアウトしてから、下記設定を投入します。GPSflag1はPPSを処理するかのフラグ、flag3はPPSの管理をntpdでするかカーネルでするか(0がntpd、1がカーネル)のフラグです。あと、入れなくても精度は出ますが気になる方はtime2も入れてください。time2はPPSに対するNMEAの遅延時間で、単位は秒です。この設定で動かすと、下のようになります。上記でGPSモジュールを参照してntpdが動作するようになりました。時刻精度を出したい、参照時の精度を出したいといった場合には下記設定をすると良いでしょう。・CPU周波数の固定rpiのCPU周波数は、アイドル時には低く負荷がかかると高くなります。周波数変動時の遅延が時刻に影響をするので、それを固定します。raspi-configでオーバークロックをするとリセットされてしまうので注意。/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor・シリアルのレイテンシ設定シリアル(NMEA)はオフセット指定できるので標準のままでも問題ないのですが、レイテンシを低減しておくとなお良いかと思います。low_latencyこの設定を入れる前後で遅延時間がいくぶん変化しますので、必要に応じてntp.confに修正を加えてください。・LANコントローラーの設定rpiに搭載されているLANコントローラーはSMSC9512というもので、USBハブと一緒になっています。ターボモードというものがあり複数のパケットを同時送出できますが、カーネルクラッシュの危険性がありますので無効にしたほうが良いのかも。/boot/cmdline.txtに下記設定を入れます。smsc95xx.turbo_mode=0ppsの設定が行末になるように注意してください。・メモリの設定rpiに搭載のメモリにはリフレッシュレート調整の機能がありますが、調整時にはポーズがかかって影響が出ますので無効にします。メモリの温度によって調整しているみたいですね。/boot/cmdline.txtに下記設定を入れます。disable_pvt=1ppsの設定が行末になるように注意してください。■ちなみに自宅で運用しているrpiのオフセット値などをmuninで収集して公開しています。http://ns.lowfreq.info/munin/pintp/pintp/このくらいの精度が出る、という参考にしてもらえれば。プラグインの一部は自作したものですが、これについては別の機会に公開します。Wordpress!。