![]() |
![]() |
bash
ls
eth0/eth1 問題
ps
/etc/inetd.conf
inetd の起動と終了
2009/06/11
この記事は Ubuntu 9.04 Deskto Edition (server 版) について述べている。
この Ubuntu のカーネルは Linux 2.6.28 である。
注意: Xubuntu の方が良くできていると思う。僕は現在は Ubuntu ではなくて Xubutu を使っている。ゼミ生用に準備したサーバーは Xubutu 9.10 である。Xubutu と Ubuntu の違いはデスクトップだけである。デザインの多少の違いは勿論あるが、基本的にはデスクトップを動かしているソフトが違う。Ubutu は gnome で、重くて品が悪くて、僕は嫌い。Xubutu の fce は品が良くて軽い。コマンドで使う場合には両者に違いは無いはずである。(2010/04/12)
主にゼミ生のための内容になっている。
bashlsls で色付き表示は嫌い。見えない!
$HOME/.bashrc の中の
alias ls='ls --color=auto'
を次のように変更する。
#alias ls='ls --color=auto'
# はコメント記号。つまりコメントアウトする。
次の UNIX コマンド
pwd, ls, cd, mkdir, cat, less, cp, rm, mv
覚える事。ファイルを指定する時の * と ? も便利
シェルのリダイレクト記号 > と < 、およびパイプ記号 | の使い方を覚えるとさらに便利。
さらに UNIX のいくつかの基本ツール、特に grep は非常に役に立つ。
コマンドやファイル形式に関するマニュアルは
man コマンド名
で見る事ができる。例
man man
特に
man -k キーワード
でキーワードに関係するマニュアルの一覧が得られる。
Ubuntu はクライアントに徹している。サーバに必要なソフトウェアが含まれていない。サーバ版と言われているものでさえそうである。
http://packages.ubuntu.com/ja/
Application menu からパッケージマネージャに辿り着く。
"System" → "Administration" → "Synaptic Package Manager"
apt-get
inetutils-inetd をインストールするには
sudo apt-get install inetutils-inetd
しかし...
# sudo apt-get install inetutils-inetd パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています Reading state information... 完了 パッケージ inetutils-inetd はデータベースには存在しますが、利用できません。 おそらく、そのパッケージが見つからないか、もう古くなっているか、 あるいは別のソースからのみしか利用できないという状況が考えられます E: パッケージ inetutils-inetd にはインストール候補がありません
コマンドを打ち込んだが、そのコマンドがパッケージには存在するが、まだインストールされていない場合
-bash$ jed The program 'jed' is currently not installed. You can install it by typing: sudo apt-get install jed -bash: jed: command not found -bash$
のようになる。
このとき
sudo apt-get install jed
を実行すれば jed がインストールされる。
( jed は emacs 風の軽量なテキストエディタである。現在の emacs は肥満ぎみで初心者には使い難くなっているが、jed は初期の emacs に似ていて、初心者には使いやすいと思われる。)
従って emacs をインストールしたければ、単に emacs と打ち込めばインストールの方法が分かる。
Ubuntu のパッケージ管理に関しては次の URL が参考になる。
2010/04/12
現在の Linux は NetworkManager よって IP 関係が管理されている。NetworkManager については、次の URL が詳しい。
http://projects.gnome.org/NetworkManager/
NetworkManager は Linux をモバイル環境に適応させるためのものだと言う...
2010/04/12 xubuntu 9.10
/etc/NetworkManager/system-connections/
の中のファイル 'Auto eth0' に現在の情報が含まれている。IP アドレスの変更は、このファイルを編集すれば良い。
例えば次のようになっている。
id=Auto eth0 uuid=5c1122e2-1089-4374-a8de-2158bb63a15f type=802-3-ethernet autoconnect=true timestamp=0 [ipv4] method=manual dns=202.225.94.247; addresses1=202.250.160.119;24;192.168.1.254; ignore-auto-routes=false ignore-auto-dns=false dhcp-send-hostname=false never-default=false [802-3-ethernet] speed=0 duplex=full auto-negotiate=true mac-address=0:24:1d:cc:3f:e3 mtu=0 [ipv6] method=ignore ignore-auto-routes=false ignore-auto-dns=false never-default=false
GUI 環境では画面右上の NetworkManager のアイコンから入る。コンピュータの形のアイコン。
NetworkManager の使い方の詳しい説明は
https://www.opendns.com/start/device/ubuntu
に述べられている。
古いバージョンでは NetworkManager は使われていない。使われているか使われていないかは
ps -e | grep NetworkManager
で判明する。
変更後はリブートが必要。
ネット上の多くの記事によると /etc/network/interfaces を編集するように解説されているが、しかし /etc/network/interfaces の設定は再起動で消されている。正しくは NetworkManager アイコンから入らなくてはならない。
ネットワークの状態を確認したり設定したりする unix 系 OS の本来のコマンドは ifconfig である。
コマンド
ifconfig -a
で eth0 に、設定した IP が表示される事を確認。出力例
eth0 Link encap:Ethernet HWaddr 00:40:63:f0:f6:a9
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::240:63ff:fef0:f6a9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25757 errors:0 dropped:0 overruns:0 frame:0
TX packets:20399 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11620344 (11.6 MB) TX bytes:1446096 (1.4 MB)
Interrupt:23 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:284 errors:0 dropped:0 overruns:0 frame:0
TX packets:284 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21597 (21.5 KB) TX bytes:21597 (21.5 KB)
pan0 Link encap:Ethernet HWaddr 12:3f:7e:33:b4:e0
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo と eth0 を確認する。なお pan0 は bluetooth である。
詳しくは http://ubuntuforums.org/showthread.php?t=1000506
(ifconfigを実行したマザーボードは VB7001G であるが、
このマザーボードは bluetooth を内蔵していない。
これが表示されるのは一種のバグだろう)
以下は単なる過去の方法のメモである。設定しても消される。
次のように /etc/network/interfaces を設定する。(これは単なる例である)
auto lo iface lo inet loopback iface eth0 inet static address 192.168.1.3 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254
IP アドレスを目標に応じて変える事。
設定したら
ifup eth0
を実行する。
eth0/eth1 問題2009/06/12
2009/06/13
イーサーネットコントローラが1つしかないボードであるにも関わらず、 eth0 ではなく、eth1 で IP が割り振られた問題。これは Linux のバグらしい[1]。対処の方法があるらしい[2]。それによると
/etc/udev/rules.d/z25_persistent-net.rules
の中を変更せよとか... (それにしてもなぜ eth1 になったのかと言う問題は残っている)
EeePC の Ubuntu でも同様な問題(ここでは eth3 に)が発生していたが、アップデートしたら問題は解決した。(従って eth1 問題はバグだったと考えられる)
従って正しい解決策は アップデートである。
(2009/06/13)
追記: アップデートした Ubutntu のディスクを他のマシンで動かすと、やはり eth1 が現れた。この理由は /etc/udev/rules.d/70-persistent-net.rules をみれば納得できる。
# PCI device 0x1106:0x3065 (via-rhine)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:40:63:f0:f6:a9", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x294c (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1c:c0:22:cb:d8", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
/etc/udev/rules.d/70-persistent-net.rules の例
MAC アドレスごとに eth の数字が割り当てられる仕組みになっているのだ(これは eth の意味からして当然だ)が、この情報はハードディスクを他のマシンに移動しても消えていない! (便利な事もあるが、バグと考えるべきであろう。)
(2009/06/14)
[1] eth0 is moved to eth1
https://bugs.launchpad.net/ubuntu/+bug/148448
[2] Re: eth0がeth1として認識される
http://lists.debian.or.jp/debian-users/200709/msg00074.html
かっては /etc/resolv.conf が使われていたが、現在では NetworkManager を使って設定する。
/etc/NetworkManager/system-connections/
の中の Auto eth0 を編集しても効果が無い!
NetworkManager の情報がどのファイルによって決定されるか、今のところ知らない。
/etc/resolv.conf には現在の DNS サーバの IP アドレスが見える。ここに書き込みをしても再起動したら消されている。
詳しくは
https://www.opendns.com/start/device/ubuntu
に述べられている。
以下は単なる過去の方法のメモである。設定しても消される。
次のように /etc/resolv.conf を設定する。(これは単なる例である)
nameserver 202.225.94.247 nameserver 210.147.240.193
Ubuntu では、このファイルは NetworkManager が管理しており、ここを編集しても消される。
/etc/hosts を、例えば、次のように設定すれば
127.0.0.1 localhost 202.250.160.40 ar.aichi-u.ac.jp ar
フルドメイン名 ar.aichi-u.ac.jp を指定しなくても、単に ar で 202.250.160.40 にアクセスできるようになる。他も同様。/etc/hosts の設定は、そのコンピュータの中から他のコンピュータにアクセスする時にだけ有効。
Ubuntu の画面からは
"System" → "Prferences" → "Network Proxy"
この設定は /etc/profile.d に書き込まれる。
inetd や telnetd 等のサーバ用の基本ツールはいくつかの種類があるが、ここでは GNU のものを使う。理由は良くメンテナンスされているように思えることと、インストールしやすいから。次の URL から手に入る。
http://savannah.gnu.org/forum/forum.php?forum_id=5590
この中には
inetd, telnetd, ftpd, ....
などが含まれ、これらは
/usr/local/libexec/
にインストールされる。
ダウンロードしたファイルは inetutils-1.6.tar.gz である。これが置かれているディレクトリに移動し
gzip -d inetutils-1.6.tar.gz
で
inetutils-1.6.tar
が生成される。そこで
tar -xf inetutils-1.6.tar
を実行すると
inetutils-1.6
が生成される。これはディレクトリである。
cd inetutils-1.6
によってこのディレクトリに移行して
./configure
make
sudo make install
でインストールされる。
UNIX 系の OS では、ユーザが後でインストールしたソフトウェアは、ディレクトリ /usr/local の下に置かれるのが習慣である。今回のケースでは /usr/local/bin や /usr/local/libexec などにインストールされている。
ls -l /usr/local
ls -l /usr/local/bin
ls -l /usr/local/libexec
で確認せよ。インストールによって屢々発生するトラブルの一つに、これまで使っていたコマンドと同名のコマンドがインストールされ、しかもそのコマンドが何か問題を抱えているケースがある。今回のケースでは /usr/local/bin にインストールされた ifconfig が要注意である。このコマンドは /sbin にも存在し、これまでは実際には /sbin/ifconfig が使われてきた。単にコマンド
ifconfig
を実行した場合にどちらの ifconfig が使われるのか? この事は
which ifconfig
を実行してみれば分かる。実行の優先順位は環境変数 $PATH で制御される。
echo $PATH
を実行すると Ubuntu では /usr/local が優先されているのが分かる。(このような設定はセキュリティリスクを伴う)
Ubuntu に組み込まれていた ifconfig と inetutils の ifconfig は使い方が全く異なる。この二つは同じ名前であるが、違うものと考えた方が良い。
どうすべきか? inetutils の ifconfig は使わない方が良い。そのためには? 削除するか、名前を変更する。後者の道を採ろう。
cd /usr/local/bin
ls # ifconfig の存在を確認
sudo mv ifconfig ifconfig_
プロセスとは実行中のプログラムの事である。
ps現在実行中の全てのプログラムは
ps -e
でみることができる。最初のフィールドがプロセスID。
実行例
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
...
プロセスを強制的に落とすには
kill -KILL プロセスID
他人のプロセスは落とせない。管理者(root)権限では任意のプロセスを落とせる。
プロセスを実行したユーザ(プロセスオーナー)を知りたい時には
ps -el
実行例
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 477 select ? 00:00:02 init 5 S 0 2 0 0 75 -5 - 0 kthrea ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0 1 S 0 4 2 0 75 -5 - 0 ksofti ? 00:00:00 ksoftirqd/0 5 S 0 5 2 0 -40 - - 0 watchd ? 00:00:00 watchdog/0 1 S 0 6 2 0 75 -5 - 0 worker ? 00:00:00 events/0 ... 5 S 0 4052 1 0 80 0 - 539 select ? 00:00:00 inetd 0 S 0 4160 4052 0 80 0 - 593 select ? 00:00:00 telnetd 4 S 0 4161 4160 0 80 0 - 1012 wait pts/2 00:00:00 login 4 S 1000 4253 4161 0 80 0 - 1380 wait pts/2 00:00:00 bash 0 R 1000 6579 4253 0 80 0 - 701 - pts/2 00:00:00 ps
UID がユーザ ID、PID がプロセス ID
UID = 0 は管理者(root)のプロセス。(特権プロセス)
他の UID とユーザ名の対応は /etc/passwd を見れば分かる。
/etc/inetd.confinetd を立ち上げる前に /etc/inetd.conf を設定する。例えば
# @(#)inetd.conf 5.4 (Berkeley) 6/30/90 # ftp stream tcp4 nowait root /usr/local/libexec/ftpd ftpd -l telnet stream tcp4 nowait root /usr/local/libexec/telnetd telnetd shell stream tcp4 nowait root /usr/local/libexec/rshd rshd login stream tcp4 nowait root /usr/local/libexec/rlogind rlogind
とすると、ここに書いたサービスプログラムへ外部からアクセスできるようになる。
注意、注意、注意!
ダウンロードした inetd は IPv6 に対応している。第3フィールドの tcp4 は IPv4 で、tcp6 は IPv6 用である。単に tcp と書くと tcp6 を意味する。(そのために、古い書き方との互換性を持っていない。これはバグだろうと思うけど...。IPv6 は明示的に書くのが無難である。)
うっかりと tcp と書くと、refused で悩まされるだろう。
inetd の起動と終了root 権限で
/usr/local/libexec/inetd /etc/inetd.conf
を実行する。
inetd はブート時に自動実行させるべきであるが、その方法については後に回す。
inetd が動いている事は
ps -a | grep inetd
で確認できる。
inetd.conf の内容を変更した場合には、それを inetd に反映させるためには
ps -a | grep inetd
で inetd のプロセスIDを調べ、 root 権限で
kill -HUP プロセスID
を実行する。(最近は1つのコマンドで行えるようになっているらしいが、僕は好きではない。余計な知識が必要になるから...)
なお HUP の代わりに KILL を指定すると、プロセスを落とせる。
接続待ち、接続中のポートを見る
netstat -na64
結果(例)
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:513 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:7 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 138 192.168.1.3:23 192.168.1.101:56120 ESTABLISHED tcp6 0 0 ::1:631 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:48584 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:*
ポート番号とサービス名の対応は
/etc/services
を見れば分かる。
inetd が動いているにも関わらず、/etc/inetd.conf で指定したサービスに対して LISTEN になっていない場合がある。そのような現象は /usr/local/libexec/inetd を起動する時に /etc/inetd.conf が指定されていなかった時に発生する。マニュアルによると、指定しなくても /etc/inetd.conf を読み取ってくれるはずなのであるが、実際には読み取らない。inetd のバグであろう。
(2009/06/19)
/var/log/syslog を見る。
先に述べた inetd の設定は、信頼できる環境(ブロードバンドルータで保護された家庭内 LAN など)を想定している。IP レベルでのアクセス制限を加えるとセキュリティが大幅に強化される。この方法も後で示す。
telnet や ftp は入力したパスワードをそのままネットに流すので、インターネットレベルの利用では不安が残る。この対策も後で述べる。
コンピュータが立ち上がった時に、inetd などのサービスを自動的に実行するには /etc/rc.local を編集する。
注意: このファイルは、名前のごとく local な設定である。ここで言う local の意味は、システム管理者が必要に応じて設定すると言う意味である。Ubuntu の /etc を見ると rc0.d から rc6.d および rcS.d なるディレクトリが存在し、そこではコンピュータが立ち上がった時に自動的に様々なサービスを実行するためのファイルが存在するが、システム管理者がこの場所を弄るのは避けるべきである。
inetd のサービスを行うためには、 /etc/rc.local の末尾を
/usr/local/libexec/inetd /etc/inetd.conf exit 0
とする。このファイルの中の '#' で始まる行はコメントである*。コメントの中で注意されているように実行ビットを立てておく必要がある。
ls -l
で
-rwxr-xr-x 1 root root 348 2009-06-19 23:17 rc.local
のように -rwxr-xr-x を確認する。そのようになっていないなら root 権限で
chmod 755 rc.local
を実行しておく。
注*: 先頭の
#!/bin/sh -e
はコメントではない。
UNIX の場合クライアントからサーバに入り込みコマンドを実行できる。この点で Windows と UNIX を比較すると次の表のようになる。
| sever OS | client OS | 可能? |
|---|---|---|
| Windows | Windows | X |
| Windows | UNIX | X |
| UNIX | Windows | △ |
| UNIX | UNIX | ◯ |
もともと UNIX はサーバとして設計されたので、単体で使うのを基本とした Windows との違いがこの表に現れている。
レンタルサーバの殆どは Linux(UNIXの一種) であるが、理由としては
などが挙げられる。
telnet はサーバにアクセスし、そこでコマンドを実行するためのソフトウェアである。
クライアントから
telnet サーバのアドレス
を実行し
login:
メッセージが出れば、サーバは telnet をサービスしている。もしも出ないならば
inetd が動いているか?
/etc/inetd.conf に次の行が存在するか?
telnet stream tcp4 nowait root /usr/local/libexec/telnetd telnetd
を確認する。
但し実際にサーバに入り込めるためにはアクセスを許すユーザを登録しておかなくてはならない。
telnet を使う時には次の点に留意しなくてはならない。
Telnet を通じてクライアントからサーバのファイルを編集する昔からの伝統的な方法は
ed を使う
vi を使う
emacs を使う
の3つである。いずれもマウスは使わない(使えない)。どのソフトも初心者には辛いものがある。この中で初心者に違和感が少ないのは emacs であろう。しかし emacs は巨大な怪物であり、初心者にとってはコントロールし辛いであろう。初心者が emacs を使う時には欲張らずに限定的な使い方をした方がよい。
以下の2つを憶える
emacs ファイル名
C-X C-C
(Control キーを押しながら X を打ち、さらに Control キーを押しながら C を打つ)
さらに詳しくはネットに次の解説がある。
「Emacs クイックリファレンス」(http://www.unixuser.org/~euske/doc/emacsref/)
編集を終えないでデータをファイルに保存するのは正式には
C-X C-S
であるが、Cotrol-S は問題を引き起こす。
C-X s
(Control キーを押しながら X を打ち、さらに s を打つ)で代用できる。
サーバとクライアントとの間のファイルの転送の伝統的な方法は FTP である。クライアントにはそのための ftp コマンドが存在するが、初心者には使い方が難しいであろう。現在では ftp コマンドに代わる初心者向けのソフトウェアが多数存在する。
ssh は Telnet と FTP の機能を備えている。サーバとクライアントのデータ転送は暗号化されており、その意味でセキュリティが向上している*。
ssh を telnet のように使うには
ssh arisawa@192.168.1.3
のようにする。@ の後は IP アドレスではなくサーバ名でもよい。
ssh を ftp のように使うには
scp 192.168.1.3:サーバのファイル クライアントのファイル
あるいは
scp クライアントのファイル 192.168.1.3:サーバのファイル
のように使う。IPアドレスの代わりにサーバ名でもよい。またファイルは絶対パスを指定する。(/ で始まるパス)
サーバが ssh によるサービスをサポートするには sshd をインストールする必要がある。サーバ上で
sudo apt-get install openssh-server
を実行すると sshd がインストールできる。インストールを実行すると /etc/ssh に幾つかのファイルが追加される。その中に sshd_config がある。
sshd_config で認証方法を設定する。ここでは一番簡単な認証方法である「パスワードによる認証」に設定する。
PasswordAuthentication yes
多分初期設定ではこの行が '#' から始まっている(つまりコメントアウトされている)と思いますが、'#' を外します。
sshd は /usr/sbin/sshd にインストールされたはずです。この事は
whereis sshd
を実行してみれば分かります。手動で起動するには
/usr/sbin/sshd
を実行します。
sshfs を使うとサーバのファイルをクライアントにマウントできます。マウントできるとサーバのファイルがクライアントの中にあるかのように、クライアントのエディタを使って編集できます。もちろん編集にはマウスを使えます。sshfs が使えるようにするためには、サーバ側に sshd、クライアント側に Fuse と言うソフトが必要です。Mac の場合には MacFuse の名前で Google が公開しています。次のアドレスから取り寄せてインストールして下さい。
http://code.google.com/p/macfuse/
2010/03/22
ここでは web サーバ を Apache を使って構築する。Apache を使うのは、世界で最もよく使われているからである。レンタルサーバーの殆どは Apache を使っていると思われる。
Apache の本家の HP は http://www.apache.org/ であるが、英語のページである。日本人向けの普及活動はユーザグループによって http://www.apache.jp/ で行われている。
Apache の現在のバージョンは 2.2.12 である。以下ではバージョン2の Apache は Apache2 で示す。Apache2 に関する日本語のドキュメントは
http://www.apache.jp/manual/
に載っている。
Apache2 をインストールするには
sudo apt-get istall apache2
を実行する。すると
/usr/sbin/apache2 # サーバーの本体(httpd)
/usr/sbin/apache2ctl # apache2 の制御プログラム
/etc/apache2/apache2.conf # apache2 の基本設定ファイル
/etc/apache2/httpd.conf # 空ファイル(互換性のためにあると思われる)
/etc/apache2/sites-available/default # HTML ドキュメントの置き場所
/var/www/index.html # ホームページのデータ
/var/log/apache2/ # apache2 のログファイルの置き場所
/etc/init.d/apache2 # 電源投入時の自動実行スクリプト
などのファイルが生成される。
apache2.conf の内容を見れば Apache の大まかな振る舞いが分かる。例えば
ServerRoot "/etc/apache2"
AccessFileName .htaccess
ErrorLog /var/log/apache2/error.log
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
また site-available の default を見ると DocumentRoot /var/www の記述がある。
画面右上の時刻欄を右クリック。この方法ではシステムクロックを使う事になる。これは狂いが発生する。バッテリが古い場合には特に問題である。
タイムサーバを使う。タイムサーバの利点は、時刻合わせが正確だと言う事にある。タイムサーバの設定は
https://help.ubuntu.com/7.04/server/C/NTP.html
に書かれている。愛知大学のタイムサーバのアドレスは
smtp.aichi-u.ac.jp
である。