CentOSでルーティング追加

以前にWindowsでのルーティング追加をメモしておいたが、
Linuxでもルーティング追加をやってみた。
試したディストリはCentOSのバージョン6.10。
未だにバージョン7を触れていないが・・・。

Windowsのときと同様にオプションを付ける付けないで
一時的、恒久的を選べるのかと思っていたが、
Linuxではファイルに書き込む必要があるようだ。

最近はUbuntuも業務で使われることも多くなってきているが、
とりあえずはCentOSでのやり方をメモしておきたい。


CentOSでの一時的なルーティング追加


一時的なルーティング追加であればWindows同様コマンド一行でいける。
とりあえずは現在のルーティングテーブルの確認。

 [root@localhost ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.64.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.247.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
1.1.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
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.64.2 0.0.0.0 UG 0 0 0 eth0


デフォゲ以外はConnectとLink-Localなので、
Gatewayが0.0.0.0になっているものは一旦無視。
今は特にデフォゲ意外にルートは無い形になる。

ではコマンドでルートを追加してみる。
routeコマンドとipコマンドでの追加方法があるが、
ここでは一般的だと思われるrouteコマンドを使って追加してみる。

■通常のルーティング追加
 route add -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.247.254 eth1


Windowsと違いPrefixを用いた記述も可能だ。

 route add -net 172.16.1.0/24 gw 192.168.247.254 eth1


■hostルーティング追加
 route add -host 10.1.1.1 gw 192.168.247.254 eth1


自分は面倒くさいのでrootユーザになってしまったが、sudo付与でも問題ない。
hostルートの追加は-netオプションでnetmaskを255.255.255.255でも問題はないが、
-hostオプションを使った方が簡潔に書けるので良い。

ちなみに追加したルートを削除したければaddをdelに変えてあげればOK。


追加後にルーティングテーブルを再度チェック。

 [root@localhost ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.1.1.1 192.168.247.254 255.255.255.255 UGH 0 0 0 eth1
192.168.64.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.1.0 192.168.247.254 255.255.255.0 UG 0 0 0 eth1
192.168.247.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
1.1.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
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.64.2 0.0.0.0 UG 0 0 0 eth0


こんな感じで問題なく追加された。

では本当に一時的なのか念の為再起動してみる。
再起動後にまたルーティングテーブルを確認。

 [root@localhost ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.64.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.247.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
1.1.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
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.64.2 0.0.0.0 UG 0 0 0 eth0


追加したルートは消えてしまった。
やはり一時的というのは本当らしい。


CentOSでの恒久的なルーティング追加


CentOSで恒久的にルーティングを追加したい場合はファイルに書き込む必要がある。
そのファイルのパスは以下になる。

 /etc/sysconfig/network-scripts/route-ethX


最後の「X」はルーティングに紐づく出力インターフェース名を指定する。
ちなみに現在該当ファイルは無かったので、新規で作成する必要がありそうだ。

 [root@localhost ~]# ls /etc/sysconfig/network-scripts/
ifcfg-eth0 ifdown-eth ifdown-sit ifup-ipv6 ifup-tunnel
ifcfg-eth0:0 ifdown-ib ifdown-tunnel ifup-isdn ifup-wireless
ifcfg-eth0:1 ifdown-ippp ifup ifup-plip init.ipv6-global
ifcfg-eth1 ifdown-ipv6 ifup-aliases ifup-plusb net.hotplug
ifcfg-eth2 ifdown-isdn ifup-bnep ifup-post network-functions
ifcfg-lo ifdown-post ifup-eth ifup-ppp network-functions-ipv6
ifdown ifdown-ppp ifup-ib ifup-routes
ifdown-bnep ifdown-routes ifup-ippp ifup-sit


viを使ってファイルを作成する。

 vi /etc/sysconfig/network-scripts/route-eth1


実際に記載する内容は以下になる。
一時的なルートと同内容のルート追加だ。

 172.16.1.0/24 via 192.168.247.254
10.1.1.1/32 via 192.168.247.254


ルートの記載が終わったらnetworkサービスの再起動をする。

 service network restart


もしくは

 /etc/init.d/network restart


終わったらルーティングテーブルの確認。

 [root@localhost ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.1.1.1 192.168.247.254 255.255.255.255 UGH 0 0 0 eth1
192.168.64.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.1.0 192.168.247.254 255.255.255.0 UG 0 0 0 eth1
192.168.247.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
1.1.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
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.64.2 0.0.0.0 UG 0 0 0 eth0


ちゃんと追加されている。
念の為、再起動後も確認してみる。

 [root@localhost ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.1.1.1 192.168.247.254 255.255.255.255 UGH 0 0 0 eth1
192.168.64.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.1.0 192.168.247.254 255.255.255.0 UG 0 0 0 eth1
192.168.247.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
1.1.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
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.64.2 0.0.0.0 UG 0 0 0 eth0


問題なく設定が残っている。


ディストリビューションが違ってくれば設定方法も変わってくるが、
Linuxでのルーティング追加もそこまで難しいものではないだろう。

ここまできたらパケット転送もやってみたくなるが、
それはまた別の機会に。


今回は以上で。



LinuxコマンドABCリファレンス


人気記事