わたしの名はフレイ 作家・デザイナー見習い
神々とともに生きる詩人 一等星シリウスの導きを信じて

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

ifconfig

ネットワーク設定の確認と変更に行う。特に良く使うコマンドだから、覚えていた方が良いが、とても複雑だ。設定を確認する以下のコマンドが分かっていればそれで何とかなる。

コマンド実行

ifconfigに「-a」オプションをつけて実行すると、存在するインタフェースごとのネットワーク設定を表示する。

loは「ループバックインターフェース」で、自分自身と通信するために使われる。

ネットワークインターフェースの設定

設定は以下のように行う。

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
              IPアドレス           サブネットマスク        ブロードキャストアドレス

まず、ifconfigに続いてインタフェース名を指定する。ここでは「eth0」。

IPアドレスは、ホストのIPアドレス

   192      168      0         2
11000000 10101000 00000000 00000010

ネットワークの内部と外部を識別するために、IPアドレスはネットワーク部とホスト部に分かれる。IPをビットにした時に1をネットワーク部、0をホスト部としたものが、サブネットマスク

   255      255     255        0
11111111 11111111 11111111 00000000

サブネットマスクだけではなく、ブロードキャストアドレスを設定する場合もある。これはネットワークと同じネットワーク部を持ち、ホスト部を1としたアドレス。パケットをブロードキャストするためにのみ存在する。ブロードキャストとは1対1ではなく1対多の通信で、同じネットワーク内の全てのホストと通信を行う。

   192      168      0        255
11000000 10101000 00000000 11111111

また、これらに加えてrouteコマンドでゲートウェイを登録する。ゲートウェイはどのホストがインターネットを共有するかを指定したアドレス。

route add default gw 192.168.1.1

Red Hat, Debianなどの高レベルな設定プログラム

net-toolsにはifconfigなどの低レベルプログラムがあるが、これらの多くは既に型遅れで、現在はiproute2のipなどを使うことが推奨される。

これらの低レベルプログラムは強力だが使うのが面倒であり、多くの場合高レベルのネットワーク設定プログラムを使う。たとえばDebianではifupdown。

netstatコマンドとは

名称は「Network statistics」の略で、ネットワーク接続、ルーティング、ネットワークインターフェース(NIC)の状況や状態を表示できる。

netstatTCP/UDPプロトコルを対象に統計状態を表示する。TCPソケットを表示する「-t」、UDPソケットを表示する「-u」オプションと、多数用意されているオプションを組み合わせて使用する。

route

ルーティングテーブルの表示・設定を行う。

top

topはリアルタイムのモニタリングツール。システムで稼働しているプロセスやスレッドの状況をリアルタイムで表示できる。

vmstatとiostat

vmstatは仮想メモリの統計情報、iostatは入出力デバイスの統計情報を表示する。

topとともに、サーバーのリソースをリアルタイムでモニタリングするのに使える。OSでの実行を待機中のプロセスのキューを表示するのにもvmstatが使える。

iptables

ファイアーウォール(パケットフィルタリング)やNAT(ルーティングやアドレス変換)として通信の許可とブロックを行うための、Linuxのネットワーク設定(Netfilter)を設定する技術。CentOS 6などで使われる。

Netfilterはパケットフィルタリングのパッケージで、ネットワークドライバとカーネルとの間でパケットの内容を精査し、設定に応じてパケットを破棄することで不正なパケットの排除を行う。

nftables

ファイアーウォール。Debian 10ではiptablesからnftablesに置き換わる。

SSHとは

SSHはリモートのマシンにログインする「リモートログイン」ソフトウェア。

リモートのLinuxマシンにログインし、UNIXコマンドを実行したり、パッケージをインストール・更新したり、サービスを起動・停止したり、設定ファイルを編集したりする、「リモート管理」を行うことができる。

Linuxを使う上で、コマンドラインのOSを使うメリットとして言えるのは、「GUIよりも高度なことが簡単にできる」とか「スクリプトで自動化したり、パイプで複数のコマンドを組み合わせることができる」などとよく言われ、コンソール(端末の白黒画面のターミナル)やGUIの端末エミュレータGUIの中でコマンドラインが使えるターミナル)から使うこともできますが、コマンドラインの醍醐味はSSHでリモートのサーバーにログインするなどして、リモートからコマンド操作を行うことだと思います。

たとえばWindows上のTeraTermなどの端末エミュレータから、リモートのLinuxサーバーマシンにログインし、操作を行う。この時、mkdirやcpなどのUNIXコマンドを覚えていると、多くのUNIXコマンドが使える。UNIXコマンドの大きなメリットは、「SSHでリモート操作ができる」ということが多い。

ただし、リモートからログインできるため、セキュリティ管理には注意が必要。昔からのUNIXエンジニアにはrlogin/telnetを使ったログインがお馴染みだが、SSHはそれらよりもセキュリティが高いとされている。

あまり使う頻度は多くないかもしれないが、WindowsからLinuxGUIアプリケーションを起動したい場合は、Cygwin/Xなどが使用できる。僕は使ったことがないので実際は分からないが、Cygwin上のXでもおそらくリモートのXアプリケーションに接続できる(Xはネットワーク透過なクライアント・サーバーシステムである)。

また、リモートデスクトップとしてはVNCと呼ばれるソフトウェアがある。これはリモートのコンピュータを遠隔操作することができ、Windowsなどでも使用できる。

セキュリティ上の注意点

sshはセキュリティ上好ましい設定をしておくべきです。レンタルサーバーの勉強のためにVPSを借りて放っておいたら、いつの間にかrootを乗っ取られて完全に好き放題やられていた、という風にならないように、セキュリティ上の好ましい設定を行いましょう。

NFS

ネットワーク・ファイルシステム。マウントしたボリュームはネットワーク上にあることを意識せず、ローカルのファイルシステムと同じように利用出来る。

ファイルシステムあるいはNFSサーバーがネットワーク上にあるかローカル上にあるかを一切考えなくても、同じファイルシステムとしてクライアントにマウントして使うことができる。Linuxだけではなく、多くのUNIXでも対応していて、もともとは商用UNIXベンダーのSun Microsystemsが開発した。

Samba

フリーソフトウェアによるWindowsネットワークの実装。

Sambaは、たとえば会社のチームの複数のWindowsマシンでファイルを共有したい時などに、ファイル共有サーバーをWindowsではなくLinuxで作りたい時などに使える。

必ずしもサーバーをLinuxにする必要はない。僕はWindowsマシンでファイル共有サーバーを使っていた経験があるが、Windowsでファイル共有を行うのはとても簡単で、ただフォルダを共有指定すれば、それだけでファイルサーバーになる。

あるいは、Google Driveなどを使う、という手もありだろう。

Sambaを使うと、逆にLinuxからWindowsネットワークに接続することもできる。また、GNOMEから接続することも可能だ。

NISとは

NISは、ネットワーク・インフォメーション・サービスの略で、サン・マイクロシステムズによって開発された、ネットワーク上でユーザーのアカウント情報やホスト名を共有し、配布するためのシステム。

当初は電話帳を意味する「イエローページ」という名前であり、コマンド名にypとつけるのはその時の名残りである。