>> HOME >> CentOS 4 MENU >> 常時接続の維持 (PING コマンド)
DynamicDNS を利用していて、問題になるのが、非固定 IPアドレス(動的 IPアドレス)を提供するプロバイダ(接続業者)に、通信が一定時間ないと切断されてしまうことです。すると、次に接続する場合に IPアドレスが変化します。
IPアドレスが変化した時に何が問題かと言いますと、
  • DynamicDNSサービスでドメインの IPアドレスを変更してから、それが有効となるの反映時間が 1-10分程かかる。
  • プロバイダ(接続業者)にて、一度アクセスされたサブ・ドメイン名に対応する IPアドレスがある時間キャッシュされる為、IPアドレスを変更してもこの長いキャッシュ時間、プロバイダで前の IPアドレスが保持され、アクセスができない。
ということで、擬似固定 IPアドレスを目指します。方法としては・・・
  • ルータ使用時には、接続が自動切断にならないようにルータを設定する(繋ぎっ放しに設定)。
  • 非固定 IP アドレス(動的 IP アドレス)を提供するプロバイダ(接続業者)に自動的に切断されない様、一定時間間隔でパケットを送信。( 5 分間隔で、PING コマンドを用いて ICMP パケットを発行する )

1. ルータの設定
2. パケット送信先の特定
1 ) プロバイダのドメイン名を問い合わせ
2 ) ドメイン名に対応する IPアドレス に Traceroute を実施
3 ) 最も近い IPアドレスに PING を実施
3. 一定時間毎の PING
1 ) スケジューラ(cron)への登録
1. ルータの設定
機種によって違うので割愛します。
2. パケット送信先の特定
1 ) プロバイダのドメイン名を問い合わせ
[root@linux ~]# nslookup odn.ne.jp 

Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server:         143.90.130.165
Address:        143.90.130.165#53

Non-authoritative answer:
Name:   odn.ne.jp
Address: 143.90.131.6
2 ) ドメイン名に対応する IPアドレス に Traceroute を実施
Windowsは、tracert コマンドです。tracert コマンドと traceroute コマンドの書式は、@IT-アットマーク・アイティの 「ネットワークの経路を調査する」をご参照願います。
ルータの機種によっては、ICMP パケットに応答し、1番目にルータのプライベートアドレスが表れることがあります。
この場合は2番目に応答したところが PING すべき最も近いプロバイダのグローバル IPアドレスということになります。
[root@linux ~]# traceroute 143.90.131.6 
traceroute to 143.90.131.6 (143.90.131.6), 30 hops max, 38 byte packets
1  OFSfa-02.nw.odn.ad.jp (211.127.123.9)  28.401 ms  28.604 ms  21.193 ms
2  OFSfr-01E.nw.odn.ad.jp (211.127.123.2)  19.191 ms  28.917 ms  28.797 ms
3  STOru-01G1-5-VLAN1.nw.odn.ad.jp (211.131.230.97)  28.307 ms  38.441 ms  28.333 ms
4  STOrk-07G4-0.nw.odn.ad.jp (143.90.146.34)  38.124 ms  33.520 ms  42.887 ms
5  KAJrk-03P10-0.nw.odn.ad.jp (143.90.148.1)  37.898 ms  47.809 ms  47.523 ms
6  KAJrk-02P5-0.nw.odn.ad.jp (143.90.143.161)  47.295 ms  52.566 ms  52.195 ms
3 ) 最も近い IPアドレスに PING を実施
PING 先は、接続先のプロバイダの最も近い IPアドレスとします。そうすることで、インターネットに負荷をかけず、プロバイダ内の最小限のネットワーク内だけで、パケットが帰って来ることになります。
[root@linux ~]# ping -c4 211.127.123.9 
PING 211.127.123.9 (211.127.123.9) 56(84) bytes of data.
64 bytes from 211.127.123.9: icmp_seq=0 ttl=254 time=37.7 ms
64 bytes from 211.127.123.9: icmp_seq=1 ttl=254 time=28.9 ms
64 bytes from 211.127.123.9: icmp_seq=2 ttl=254 time=35.3 ms
64 bytes from 211.127.123.9: icmp_seq=3 ttl=254 time=60.3 ms

--- 211.127.123.9 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3031ms
rtt min/avg/max/mdev = 28.961/40.597/60.383/11.863 ms, pipe 2
3. 一定時間毎の PING
1 ) スケジューラ(cron)への登録
[root@linux ~]# crontab -e 

# 5 分間隔で、PING コマンドを用いて ICMP パケットを発行する
# "> /dev/null 2>&1" をつけると PING の結果をroot宛にメールしなくなる
0,5,10,15,20,25,30,35,40,45,50,55 * * * * ping -c1 211.127.123.9 > /dev/null 2>&1