はじめに
例えば新しいパソコンを買ってきて家でネットワークにつなぐとき、SSIDとパスワードを入力してつなぐ。DHCPを指定すれば、接続に必要な情報は勝手に登録されるため、IPやデフォルトゲートウェイなどを意識して設定することはない。しかし、仕事で扱うパソコン等であれば、NICを複数枚持っているようなケースも存在する。
昨今色々なスクリプト言語やIDEによってアプリ開発のハードルは下がったように感じるが、ネットワークはまだまだ苦手な人が多い。今回は、特に新しくサーバや端末に固定IPを振って接続するケースで、どうすればよいかをまとめる。
ネットワーク設定の方法
やりがちな間違い
「パソコンにIPを設定する」=「IPやサブネットマスクやデフォルトゲートウェイを設定する」で概ね間違っていないが、複数のNICに対してデフォルトゲートウェイを設定してはいけない。複数のNICにデフォルトゲートウェイを設定してしまうとネットワークが不安定になり、通信ができなくなってしまう。
備考:開発する際の注意
仮に各NICにデフォルトゲートウェイを登録していても、他のNICが有効になっていなければ通信できてしまうこともある。例えば、個別テストのために、ひとつずつケーブルを突き刺した場合である。こうしてテストした場合、いざ全部のケーブルを接続した時点で、全部のNICに設定されたデフォルトゲートウェイが読み込まれ、結果ネットワークが不安定になる。個別の通信試験の段階から、実際に使用するすべてのNICを有効にして望むことが望ましい。
ルーティングの方法:Static Route
異なるネットワークのIPにアクセスするときの出口として必要なのがデフォルトゲートウェイであり、そもそも同じネットワークのIPとしか通信しない場合、デフォルトゲートウェイさえ必要ない。しかし、通常はデフォルトゲートウェイでいいが、特定のサブネットに対しては別のIPを経由したい場合がある。こういうケースでは、static routeを使う。
想定するケース
以下のケースを想定する。
- パソコンの設定
- NIC A
- IP: 192.168.1.10/24
- Gateway: 192.168.1.1/24
- NIC B
- IP: 10.20.30.40/24
- NIC A
- ルーティングについて
- 他のネットワークに通信するとき、通常は192.168.1.1/24を経由する(デフォルトゲートウェイ)
- ただし、サブネット10.50.60.0/24に対しては、10.20.30.50/24(例えばL3スイッチ)を経由したい
このとき、10.50.60.0/24への接続を10.20.30.50/24を経由するようstatic routeで指定する。
Windowsの場合
コマンドプロンプトでroute
コマンドを使用する。
$ route add 10.50.60.0/24 mask 255.255.255.0 10.20.30.50
削除するときは次のように、add
をdelete
にすれば良い。
$ route delete 10.50.60.0/24 mask 255.255.255.0 10.20.30.50
この設定をずっと有効にする(再起動してもこの設定が有効になる)ためには、-p
オプションを使用する。
$ route -p add 10.50.60.0/24 mask 255.255.255.0 10.20.30.50
設定がうまくできたかどうかは、
$ route print
で確認できる。
Linux(RHEL)の場合
RHEL(CentOS)の場合、route
コマンド(ip route
)で追加するか、/etc/sysconfig/network-script/route-eth[x]
ファイルに記述する(xは、NICに対応するethに合わせて数字を入れる)。今回は後者を紹介する。
上記の設定の場合、各ファイルには次のように設定してあるとする。
eth0が192.168.1.10/24のNIC A, eth1が10.20.30.40/24のNIC Bである。
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.10
GATEWAY=192.168.1.1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.20.30.40
このとき、eht1用(IP=10.20.30.40)に対するファイル /etc/sysconfig/network-script/route-eth1
を追加する。
10.50.60.0/24 via 10.20.30.50
その後、ネットワークの再起動を行う。
# service network restart
おまけ
以上でstatic routeの設定は終わる。最後に、通信するサブネットがごくごく限られているなら、デフォルトゲートウェイを設定せずに、明示的にstatic routeだけにするのもアリだと考える。