C# と .NET Framework 4 を主にWindows Formのアプリケーション開発について

C#.NETでいく?で“DDNS”タグの付いているブログ記事

2009年3月29日

DDNS更新ミス DDNS更新ミス

最近グローバルIPアドレスが変ることが無かったので、つい油断していました。

どうも、金曜日の午後にグローバルIPアドレスが変ってしまったようで、外部から接続ができない状態になっていて、ようするにDDNSの更新がうまくいかなかった訳です。

このサーバーは手元に無いため、こんな場合のために一定間隔で別サイトにIPアドレスだけをアップする仕組みを入れてあり、新しいグローバルIPアドレスを手動で更新で復旧しました。

DDNS更新の歴史(個人的な)

元はTepco 光で接続していて、レンタルのATERMを使用していました。
BLOGを始めたのはこの頃でDDNSとして無償のJSPEEDを使っていました。
(DiCEが対応していたので・・・)
JSEEPをDiCE(Linux版)で更新するような事をやっていました。

DiCEの更新処理が失敗時にかなり時間がたたないと再試行してくれない問題が発覚してDiCEの使用を止めて、GnuDip2で更新するように変更。
その際、グローバルIPの取得をATERMの外部IPを拾うUPnP (Universal Plug and Play)のAPIを使用してGIPを検出して更新するようにしていました。

UPnPを使用してAtermのWAN側IPアドレスを取得するにはPerlで次のようなコードになっていました。(どこか参考にさせて頂いたサイトがあったのですが忘れてしまいました)

#!/usr/bin/perl

# ATERMルータの外部IPアドレスを取得します。
#
# 外部アドレスの取得にはUPnP (Universal Plug and Play)
# を使用しています。
# このため、SOAP::Liteモジュールを使用しています。
#
# IPアドレスの取得結果は標準出力に出力します。

use SOAP::Lite;
my $soap = SOAP::Lite
    ->ns('urn:schemas-upnp-org:service:WANPPPConnection:1')
        ->proxy('http://ATERMルーターのIPアドレス/upnp/control/WANPPPConn1');
        my $som = $soap->GetExternalIPAddress();
        my $ip = $som->valueof('//GetExternalIPAddressResponse/NewExternalIPAddress');
        print "$ip\n";

この仕組みは結構うまくいって安定していました。

その後、さまざまな外的理由で超マイナーなプロバイダ(とも言えないようなところ)を経由して接続する事になり、現在に至っています。

そのプロバイダのSEと話した時には「VPN構築で外部接続を遮断する事はやってますけど、外部から接続するようにしたことはないです。DMZってなんですか?そう設定はありません。」って言われた時には焦った。1X万もする販売中止のルーター売りつけといて。(PCIのGigabitのHUBが1万X円だって)去年の話ですが。

現在のGIPからJPNICのwhois gatewayで引くと、最終的なISPはInfoWeb(富士通みたいですが)のようです。(もちろん上の答えをくれたのは富士通の中の人ではないです。念のため)

Network Information: [ネットワーク情報]
a. [IPネットワークアドレス]

2008年12月31日

DDNSのはなし DDNSのはなし

2008年も暮れかけていますが、今年も何だかんだ忙しく過ごしてしまいました。

来年こそはもっとズンズン行きたいと思いつつ、まずはサーバー環境の見直しから手をつけてみます。

2006年8月 3日

DiCEの更新失敗 DiCEの更新失敗

このサーバ、DDNS環境であり更新処理を DiCE for Linux を利用させてもらっています。

今日ふとした拍子にアドレスが変わったのだが、うまく更新が出来なかったようでリモートから接続が出来なくなってしまった。 (ルータの電源が一時的に抜かれたのが原因)

どうも、IPアドレスの変更は検出できたが更新に失敗していたようです。
ログに残っているのですが、

8/3 18:01 にDDNSの実行に失敗しました
Error: サーバーに接続できませんでした
再試行の予約をしました > 8/4 18:01

再試行は24時間後ですか・・・。

24時間あれば誰かがマシンの前にいるので再試行間隔としては長すぎ。
10分後とかにしたく変更方法を調べたのですが設定がみつからない。

そういえば、先々月ぐらいに停電した後繋がらなかったのはこれだったのだろうか。

2006年7月16日

検証結果4 RSSの解釈部の検証 : RSSリーダを.NET Framework 2.0で作る (第5回) 検証結果4 RSSの解釈部の検証 : RSSリーダを.NET Framework 2.0で作る (第5回)

今回は、RSS.NETを組み込んで20以上のRSSを読み取り「精度」「速度」について検証を行う。

早速ごにょ ごにょとテストコードを作り、購読先を登録します。
CNET Japan, IT Media を初めとする10余りのRSSのURLを登録して取得処理の時間と取得内容をチェックします。

ダウンロードと解析速度

まず、速度ですが1つのURLに対して0.03秒〜2.2秒で読み込みと解析を完了しています(3スレッド並行時)。 アプリケーションの性格から10秒かかってもバックグランド動作とすれば実質問題ないので実用に十分です。


解析精度


肝心のRSS.NETの解析結果ですが、10数個の登録に対して数個しか公開日付が取れていません。
以前のテストでは、たまたま正しく取れるRSSのみ試してしまったようです。

続きを読む "検証結果4 RSSの解釈部の検証 : RSSリーダを.NET Framework 2.0で作る (第5回)"