linuxシステムネットワークコマンド(三)


一、netstat監視ネットワークコマンド
1、コマンドの概要
Netstatコマンドは、TCP/IPネットワークを監視する非常に有用なツールであり、ルーティングテーブル、実際のネットワーク接続、および各ネットワークインタフェースデバイスの状態、およびネットワークプロトコルに関する情報を表示することができる.
2、常用オプション
−tは、TCP伝送プロトコルの接続状況を示す.
−uは、UDP伝送プロトコルの接続状況を示す.
-lモニタのサーバーのSocketを表示します.
-aはすべてのケーブルのSocketを表示します.
-pはSocketを使用しているプログラム識別コードとプログラム名を表示します.
−nは、ドメイン名サーバを介さずにIPアドレスを直接使用する.
-rはrouteまたはip route showに似たルーティングテーブルを表示します.
-e詳細なソケット情報を表示します.
3、コマンドパラメータの併用
3.1、逆ドメイン名解析を無効にし、検索速度を速める
デフォルトではnetstatは、逆ドメイン名解析技術によって各IPアドレスに対応するホスト名を検索します.これにより、検索速度が低下します.ホスト名を知る必要がなく、IPアドレスが十分だと思う場合は、-nオプションを使用してドメイン名解析機能を無効にします.
[root@hpf-linux ~]# netstat -tan    // tcp IP , p 。
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0     52 192.168.1.110:22            192.168.1.104:60376         ESTABLISHED
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

3.2、リスニング中の接続のみをリストする
ネットワーク・サービスのバックグラウンド・プロセスでは、アクセスのリクエストをリスニングするためのポートが開きます.これらの傍受中のソケットも接続されたソケットと同様にnetstatに列挙される.-lオプションを使用して、リスニング中のソケットをリストします.
[root@hpf-linux ~]# netstat -tunl    // tcp、udp IP 。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

3.3、カーネルルーティング情報を表示する
-rオプションを使用してカーネルルーティング情報を印刷します.印刷された情報はrouteコマンドが出力した情報と同じです.-nオプションを使用してドメイン名の解析を禁止することもできます.
[root@hpf-linux ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
[root@hpf-linux ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

3.4、プロセス名、プロセス番号及びユーザーIDの取得
ポートと接続の情報を表示するときに、対応するプロセス名とプロセス番号を表示することは、システム管理者にとって非常に役立ちます.たとえば、httpサービスは80ポートを開きます.httpサービスが開始されたかどうか、またはhttpサービスがapacheまたはnginxで開始されたかを確認する場合は、プロセス名を参照してください.
[root@hpf-linux ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1113/sshd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1324/master        
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1744/nginx          
tcp        0      0 :::22                       :::*                        LISTEN      1113/sshd          
tcp        0      0 ::1:25                      :::*                        LISTEN      1324/master

-pオプションを使用する場合、netstatはroot権限の下で実行する必要があります.そうしないと、root権限の下で実行されるプロセス名を取得できません.プロセス名とプロセス番号よりも、プロセスの所有者を表示する方が便利です.-epオプションを使用して、プロセス名とユーザー名を同時に表示します. 
[cangls@hpf-linux ~]$ netstat -ltpe
(No info could be read for "-p": geteuid()=505 but you should be root.)   // 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name  
tcp        0      0 *:ssh                       *:*                         LISTEN      root       8879       -                  
tcp        0      0 localhost:smtp              *:*                         LISTEN      root       9221       -                  
tcp        0      0 *:ssh                       *:*                         LISTEN      root       8882       -                  
tcp        0      0 localhost:smtp              *:*                         LISTEN      root       9223       -

TCPプロトコルの下にあるリスニングソケットがリストされ、プロセス情報と追加情報が表示されます.これらの追加情報には、ユーザー名とプロセスのインデックス・セクション番号が含まれます.注意---nと-eオプションを一緒に使用すると、User列のプロパティはユーザー名ではなくユーザーのID番号です. 
[cangls@hpf-linux ~]$ netstat -ltne
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode     
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          8879       
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          9221       
tcp        0      0 :::22                       :::*                        LISTEN      0          8882       
tcp        0      0 ::1:25                      :::*                        LISTEN      0          9223

二、ss監視コマンド
1、ssコマンドの概要
ssはSocket Statisticsの略です.名前の通り、ssコマンドは、netstatと同様のコンテンツを表示できるsocket統計を取得するために使用できます.しかし、ssの利点は、TCPおよび接続状態に関するより詳細な情報をより多く表示でき、netstatよりも迅速かつ効率的であることである.またnetstatコマンドの代わりに使用されるコマンドインストールパッケージはiprouteです.
2、常用オプション
−tは、TCP伝送プロトコルの接続状況を示す.
−uは、UDP伝送プロトコルの接続状況を示す.
-lモニタのサーバーのSocketを表示します.
-aはすべてのケーブルのSocketを表示します.
-pはSocketを使用しているプログラム識別コードとプログラム名を表示します.
−nは、ドメイン名サーバを介さずにIPアドレスを直接使用する.
-rはrouteまたはip route showに似たルーティングテーブルを表示します.
-e詳細なソケット情報を表示します.
-mソケット接続に使用するメモリ情報を表示する
3、使用例
3.1、Socketsの概要を表示する
[root@hpf-linux ~]# ss -s
Total: 115 (kernel 132)
TCP:   7 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 3
Transport Total     IP        IPv6
*  132       -         -        
RAW  0         0         0        
UDP  0         0         0        
TCP  7         5         2        
INET  7         5         2        
FRAG  0         0         0

3.2、現在のシステムがtcp状態である全てのリンクをIPで表示する
[root@hpf-linux ~]# ss -tan
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      128                      :::22                      :::*    
LISTEN     0      128                       *:22                       *:*    
LISTEN     0      100                     ::1:25                      :::*    
LISTEN     0      100               127.0.0.1:25                       *:*    
LISTEN     0      128                       *:80                       *:*    
ESTAB      0      52            192.168.1.110:22           192.168.1.104:62515
ESTAB      0      0             192.168.1.110:22           192.168.1.104:60376

3.3、プロセスが使用するsocketを数字で表示する:
[root@hpf-linux ~]# ss -lnp
State       Recv-Q Send-Q       Local Address:Port         Peer Address:Port 
LISTEN      0      128                     :::22                     :::*      users:(("sshd",1113,4))
LISTEN      0      128                      *:22                      *:*      users:(("sshd",1113,3))
LISTEN      0      100                    ::1:25                     :::*      users:(("master",1324,13))
LISTEN      0      100              127.0.0.1:25                      *:*      users:(("master",1324,12))
LISTEN      0      128                      *:80                      *:*      users:(("nginx",2054,6),("nginx",2055,6))

3.4、確立された22ポートのすべての接続を表示する:
[root@hpf-linux ~]# ss -tan -o state established '( sport = :22 )'
Recv-Q Send-Q             Local Address:Port               Peer Address:Port
0      52                 192.168.1.110:22                192.168.1.104:62515  timer:(on,249ms,0)
0      0                  192.168.1.110:22                192.168.1.104:60376  timer:(keepalive,62min,0)

3.5.現在のマシンの80ポートが誰に占有されているかを確認する:
[root@hpf-linux ~]# ss -lnp src :80
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:80                       *:*      users:(("nginx",2054,6),("nginx",2055,6))
[root@hpf-linux ~]# ss -lnp |grep 80
LISTEN     0      128                       *:80                       *:*      users:(("nginx",2054,6),("nginx",2055,6))

なぜssはnetstatより速いのか:
Netstatは、/procの下にある各PIDディレクトリを巡り、ssは/proc/netの下にある統計を直接読みます.したがってss実行時にリソースを消費したり、netstatよりも時間を消費したりするのは少ない.
参照先:
http://linux.cn/thread/12158/1/1/
http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html