■ネットワーク関係のコマンド■

■基本的な通信用ユーザコマンド■

UNIXは,開発当初からネットワークをサポートするOSとして開発された.現在でも次のような主要なネットワーク通信を行うためのコマンドが標準で存在する.

○telnetコマンド(遠隔操作)○

windows上では,windows用のtelnetプログラムであるteratermを使用することができた.もちろんUNIXマシンには本家であるtelnetコマンドが用意されている.使い方は次の通り.

 telnet マシン名.ドメイン名 (例: telnet cstu.nit.ac.jp) 
 telnet IPアドレス          (例: telnet 202.18.170.30)

実行例は次のようになる

% telnet cstu.nit.ac.jp  ←あるマシンのコマンドプロンプトでtelentコマンドを入力
Trying 202.18.172.80...
Connected to cstu.nit.ac.jp.
Escape character is '^]'.


SunOS 5.8

login: xxxxxxx ←別のマシンのユーザ名を入力
Password:      ←別のマシンのパスワード入力 (画面上には入力文字が表示されない)

Last login: Tue Nov 15 17:18:03 from 10.8.62.11       ←成功するとこんな表示   
Sun Microsystems Inc.   SunOS 5.8       Generic Patch   October 2001
You have mail.
Erase set to Backspace
cstu%          ←別のマシンのコマンドプロンプトが表示された. 

telnetを終了して,元のマシンのコマンドプロンプトに戻るには,

cstu% logout

他にexitbyeコマンドでも終了できる

○sshコマンド(暗号化した遠隔操作)○

cstuではインストールされていないが,暗号化された遠隔操作のためのコマンドも存在している.telnetは通信を平文で送受信しているため,通信路上の誰かがパケットを監視していれば,その通信内容が読まれてしまう.例えばパスワード入力などが盗聴されるおそれがある.最近のマシンでは,telnetを使用できないように設定しておき,その代わりにsshだけを利用できるようにするマシンも多い.

○ftpコマンド(ファイル転送)○

windowsマシン上ではffftpが使用できたが,UNIXマシンでは本家のftpコマンドが利用できる.使い方は次の通り.

ftp マシン名.ドメイン名 (例: ftp cstu.nit.ac.jp) 
ftp IPアドレス          (例: ftp 202.18.170.30)

実行例は次の通り

% ftp cstu.nit.ac.jp                  ←あるマシンでftpコマンド入力
Connected to cstu.nit.ac.jp (202.18.172.80).
220 leo FTP server (SunOS 5.8) ready.
Name (cstu.nit.ac.jp:xxxxxx):         ←エンターキーを押す
331 Password required for xxxxx.
Password:                             ←別マシンのパスワードを入力
230 User tamura logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>                           ←別マシン上のFTPコマンド入力状態になった.

このftp>は,ftp内部のコマンド待ち状態を表し,通常のコマンドプロンプトとは異なる.ftpの内部コマンドとは,ファイルの取得や送信など,ファイル転送用のものだけが用意されており,ftpの実行中の時だけ実行できるコマンドである.一般のコマンドプロンプトの時には使用できない.ftp内部で使用できるコマンドの一覧はサーバによっても異なるが,helpコマンドで確かめることができる.

ftp> help   ←ヘルプコマンドの入力
Commands may be abbreviated.  Commands are:

!               debug           mdir            sendport        site
$               dir             mget            put             size
account         disconnect      mkdir           pwd             status
append          exit            mls             quit            struct
ascii           form            mode            quote           system
bell            get             modtime         recv            sunique
binary          glob            mput            reget           tenex
bye             hash            newer           rstatus         tick
case            help            nmap            rhelp           trace
cd              idle            nlist           rename          type
cdup            image           ntrans          reset           user
chmod           lcd             open            restart         umask
close           ls              prompt          rmdir           verbose
cr              macdef          passive         runique         ?
delete          mdelete         proxy           send
ftp>   次のコマンド入力待ち

さらに各コマンドの詳細を知りたい場合には,次のようにコマンド名も指定した上でヘルプコマンドを実行すればよい.

ftp> help get
get             receive file
ftp>

主立ったftp内部のコマンドは次のものがある.

get ftpサーバ側のファイル名      ファイルの取得コマンド
put クライアント側のファイル名   ファイルの送信コマンド
binary                           ファイルの転送をバイナリモードに設定
ascii                            ファイルの転送をアスキーモードに設定
ls                               サーバ側でlsコマンドを実行する
cd サーバ側のディレクトリ名      サーバ側でcdコマンドを実行する
bye                              ftpの終了コマンド

ファイルの転送には,大きくふたつの転送モードがある.

初期状態ではバイナリモードに設定されているサーバが多い.あるデータを間違ったモードで転送すると,例えばアスキーモードのままプログラムファイルなどを転送すると,転送操作自体は正常終了してしまうが,送られたデータの内容が壊れているので注意すること.文字だけといってもワープロの文書ファイルもバイナリモードでないと転送できない.逆にhtml 文書などはアスキーモードで転送できる

ファイルの転送先は,サーバにログインした場合のホームディレクトリである.別のディレクトリに転送したい場合には,ログインしたときと同様に,cdコマンドを利用してカレントディレクトリを移動する必要がある.

anonymous FTPサーバ(匿名ftpサーバ )

ftpサーバの中には,ユーザ名とパスワードを必要とせず,誰でも利用できるものが存在する.それをanonymous(匿名)ftpサーバと呼ぶ.フリーソフトやデータを公開する時などに利用される.

anonymous FTPサーバは次のように利用する.

% ftp anonymousサーバ名                  ←あるマシンでftpコマンド入力
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 xxxxx FTP server ready.
Name (xxxxxxxxx:xxxx): anonymous ←ユーザ名としてanonymousまたはftpと入力
331 Guest login ok, send your email address as password.
Password:               ←パスワードではなく,自分のメールアドレスを入力
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>                           ←サーバ上のFTPコマンド入力状態になった.

ポイントは,自分のユーザ名ではなく「anonymous」または「ftp」と入力すること.パスワードを要求されるが,そこで自分のメールアドレスを入力することである.入力したメールアドレスは,パスワードとして使用されるわけではない.実はそこで何も入力せずエンターキーだけを押してもアクセス可能である.しかし,そのanonymous FTPサービスを無料で提供してくれている相手のために,自分が誰なのかを名乗ることが礼儀として習慣とされている.

■ユーザ情報を調べるコマンド■

○finger(ユーザ情報の表示)○

UNIXマシンは,当初から複数のユーザが共有して使用できるように設計され ていた.自分の他のユーザに関する情報を調べるためのコマンドが存在する.

fingerコマンドは次のように使用する.

finger 調べたいユーザ名

実行結果は次のとおり

cstu$ finger tamura                 ←コマンド入力
Login name: tamura                      In real life: Tamura Hitoshi
Directory: /home/faculty/tamura         Shell: /bin/csh
On since Nov 16 14:24:20 on pts/6 from 10.8.62.11 ←前回(今回)ログイン情報
Mail last read Wed Nov 16 14:14:29 2005
No Plan.
cstu$                               ←コマンドプロンプトに帰ってきた.

○who(現在ログイン中のユーザの表示)○

UNIXマシンでは,telnetやsshコマンドを利用して,ネットワークを通じて同時に何人ものユーザがログインしていることがある.今この瞬間誰がログインしているかは次のwhoコマンドで調べることができる.実行結果は次のとおり

cstu$ who
root       console       9月 14日 18:59 (:0)
yoshioka   pts/5        11月 16日 14:15 (10.10.0.229)
tamura     pts/6        11月 16日 14:24 (10.8.62.11)
root       pts/2         9月 14日 19:00 (:0.0)
root       pts/4         9月 17日 10:59 (:0.0)
cstu$                               ←コマンドプロンプトに帰ってきた.

○w(現在ログイン中のユーザとその人がやっていることの表示)○

誰かログインしているかだけではなく,その人が今何をしているかも表示するコマンドがwコマンドである.

実行結果は次のとおり

cstu$ w
 午後 2時27分     稼働 65 日間, 18:31,  3 ユーザー,  平均負荷率: 0.04,
 0.06, 0.07
ユーザー   端末          開始時刻        待機   JCPU   PCPU  現プロセス
 名
root     console      2005年 9月14日 63日間     52     52
 /usr/dt/bin/dtscreen -mode blank
yoshioka pts/5        午後 2時15分       11                telnet sstu
tamura   pts/6        午後 2時24分                         w
root     pts/2        2005年 9月14日 60日間     14         /sbin/sh
root     pts/4        2005年 9月17日 60日間      5      5  tail -f
cachemgr.log
cstu$                               ←コマンドプロンプトに帰ってきた.

○last(ログイン履歴情報の表示)○

今現在だけでなく,過去少し前までのログイン情報の履歴を見ることもできる.誰が,何時何分にどのマシンからどれだけログインしていたかを表示する.

last                       ←全員分の表示
last 表示したいユーザ名    ←指定してユーザに関する情報だけ表示

実行結果は次のとおり

cstu$ last root
root      console      :0           Wed Sep 14 18:59   ログイン中です。
root      console                   Sun Sep 11 16:37 - 16:37
(00:00)
root      console      :0           Sun Sep 11 09:51 - 16:37
(06:46)
root      console      :0           Thu Sep  1 19:55 - 19:55
(00:00)
root      console                   Thu Sep  1 19:51 - 19:52
(00:00)
root      console                   Thu Sep  1 16:35 - 16:35
(00:00)
root      console      :0           Thu Sep  1 16:28 - 16:29
(00:00)
root      console      :0           Sat Aug 13 13:30 - 13:45
(00:14)
root      console      :0           Sat Aug 13 12:53 - 13:27
(00:34)

○talk(チャット)○

ユーザ情報を表示してみて,例えばwコマンドで今誰がログインしているのか確かめた後,その人とマシン上でキーボードを使って会話をすることもできる.

talk チャットしたい相手のユーザ名
talk ユーザ名@ホスト名               ←別マシンのユーザの場合

このコマンドを実行すると,次の画面になる.

[相手からの応答を待っています。]



-------



ここで,呼び出した相手の画面には,次の接続要求が表示される

Message from Talk_Daemon@cstu at 14:44 ...
talk: connection requested by xxxxxx@cstu.
talk: respond with:  talk xxxxxx@cstu

このメッセージを見て,相手もtalkコマンドを実行してくれればチャットが始まる.そのままキーボードをタイプすると,自分と相手の画面にその文字が表示され,会話を行うことができる.自分のタイプした文章が画面の上半分に,相手がタイプした文章が画面の下半分にリアルタイムに表示される.

会話を終了するには,コントロールキーとcを同時に押すこと(Ctrl-Cと表現される操作である.).二人とも終了すれば,talkが終了する.片一方が終了しただけだと,先ほどの接続要求が再度表示される.

■ネットワークを調査するコマンド■

○ping(ネットワーク上のマシンへパケットを送りつけて応答を見る)○

ネットワーク上のマシンが生きているのかどうか確かめるコマンドがある

ping 相手ホスト名
ping IPアドレス

実行結果は次のようになる

cstu$ ping astu.nit.ac.jp
astu.nit.ac.jp is alive

ただし,外部のホストへの問い合わせは迷惑になるためしてはいけない.そもそもファイアウォールで止められていることも多い.さらに,外部に一般公開されているサーバなどではpingに反応を返さないように設定されていることもある.

pingに反応しないように設定されている理由は,プログラムによって大量のpingを繰り返し特定のホストへ行うことで,相手ホストや相手のネットワークを麻痺させる攻撃手法がよく行われるようになったためである.

○host(ドメイン名の問い合わせをDNSサーバに要求)○

インターネットはIPアドレスによって通信先を特定している.それでは人間にとっては不便なため,人間に理解しやすいホスト名・ドメイン名(FQDN)を割り当てて,DNSサーバによって相互変換させる仕組みが構築されている.

DNSサーバへ問い合わせて,名前からIPアドレス,あるいは逆にIPアドレスから名前に変換してもらうコマンドがhostコマンドである.

host ホスト名やドメイン名  ←名前からIPアドレスを調べる(正引き)
host IPアドレス            ←IPアドレスから名前を調べる(逆引き)

実行例は次の通り.

cstu$ host www.nit.ac.jp
www.nit.ac.jp is an alias for babbage.nit.ac.jp.
babbage.nit.ac.jp has address 202.18.170.16

逆引きの例は次の通り.

cstu$ host 202.18.170.16
16.170.18.202.in-addr.arpa domain name pointer babbage.nit.ac.jp.

○dig(hostコマンドの詳細版)○

hostコマンドをより詳細にしたものがdigコマンドである.(正確にはdigコマンドを省略してものがhostコマンド)

dig ホスト名ドメイン名 ←名前からIPアドレスを調べる(正引き)
dig -x IPアドレス      ←IPアドレスから名前を調べる(逆引き)

実行例は次のとおり

cstu$ dig www.nit.ac.jp               ←www.nit.ac.jpを検索してみた.
; <<>> DiG 9.2.2 <<>> www.nit.ac.jp
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42041
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 8, ADDITIONAL: 8

;; QUESTION SECTION:
;www.nit.ac.jp.                 IN      A

;; ANSWER SECTION:
www.nit.ac.jp.          86400   IN      CNAME   babbage.nit.ac.jp.←注意
babbage.nit.ac.jp.      86400   IN      A       202.18.170.16     ←結果

;; AUTHORITY SECTION:
nit.ac.jp.              86400   IN      NS      leo.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      stu.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      astu.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      cstu.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      estu.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      mstu.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      kanda.nit.ac.jp.
nit.ac.jp.              86400   IN      NS      nit-scan.nit.ac.jp.

;; ADDITIONAL SECTION:
leo.nit.ac.jp.          86400   IN      A       202.18.172.30
stu.nit.ac.jp.          86400   IN      A       202.18.172.70
astu.nit.ac.jp.         86400   IN      A       202.18.172.60
cstu.nit.ac.jp.         86400   IN      A       202.18.172.80
estu.nit.ac.jp.         86400   IN      A       202.18.172.50
mstu.nit.ac.jp.         86400   IN      A       202.18.172.40
kanda.nit.ac.jp.        86400   IN      A       172.30.14.8
nit-scan.nit.ac.jp.     86400   IN      A       202.18.172.11

;; Query time: 4 msec
;; SERVER: 202.18.172.30#53(202.18.172.30)
;; WHEN: Wed Nov 16 15:22:55 2005
;; MSG SIZE  rcvd: 352

○traceroute(経路の表示)○

ネットワークを通じて,あるマシンへ接続する場合にどのような通信経路をたどっているのかを表示するコマンドがある.これを見ると,どのルータを介してそのマシンへ接続されているのか順を追って表示している.間に入るルータの数をホップ数と呼び,ネットワークにおける論理的な距離を表す.

traceroute ホスト名・ドメイン名・IPアドレス

実行結果は次のとおり

cstu$ traceroute cstu.nit.ac.jp
traceroute to cstu.nit.ac.jp (202.18.172.80), 30 hops max, 38 byte
packets
 1  silver (192.168.10.1)  0.294 ms  0.149 ms  0.136 ms
 2  10.8.62.240 (10.8.62.240)  0.939 ms  0.683 ms  0.644 ms
 3  uhura.nit.ac.jp (202.18.172.80)  0.821 ms  0.701 ms  0.659 ms

○netstat(ネットワーク状態の表示)○

このコマンドは管理コマンドの一種である.一般ユーザでも実行できる場合,現在のマシンが行っているネットワーク通信の状況を調べることができる.

netstat             ←現在開いているソケットを表示
netstat -r          ←経路表を出力
netstat -s          ←統計情報を出力
netstat -i          ←このマシンで使用されているネットワーク装置の表示

○ifconfig(ネットワーク装置の表示)○

このマシンに接続されているネットワークデバイスの詳細を調べることができる.

ifconfig デバイス名

デバイス名は,netstatコマンドで調べることができるので,それを指定する実行結果は次のとおりで,そのデバイスに割り当てられたIPアドレスやMACアドレスを知ることができる.

cstu$ ifconfig eri0
eri0: flags=1000843 mtu 1500 index
2
        inet 202.18.172.30 netmask ffffff00 broadcast 202.18.172.255

○tcpdump,snoop(ネットワークに流れているパケットを監視する)○

これは管理コマンドで,一般ユーザは実行できない.ネットワークに流れているパケット(通信内容の断片)を監視して内容を読むことができる.例えば通信相手別にパケットを整理したりすることで,通信内容を再現することもできる.悪用されれば,パスワードなども盗聴されてしまうことがある.

このようなソフトをスニッファと呼ぶ.これらは管理者しか実行できないので,通常は盗聴の心配をしても仕方がない.しかし,個人所有のパソコンを持ち込むことができるようなネットワークの場合には,そのパソコンを使って誰でも盗聴できる可能性がある.重要な情報は暗号化を行うなどの対策が必要である.