CentOS7で複数インターフェースにルーティングを設定する
環境はNutanix(AHV) on CentOS7.5です。
ルーティングの設定に関する記事はたくさんありますが実際にやってみると悩んだところがありましたので、はまったところを含めて設定までの一連の流れをメモしておきます。
1.NetworkManagerをインストール
Cent7minimalイメージをCloneしてインスタンスを立ち上げているので、NetworkManagerが入っていませんでした。nmcliコマンドでルーティング設定したいので、インストールします。
[root@localhost network-scripts]# yum install NetworkManager
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
[root@localhost network-scripts]# rpm -qa | grep -i network
dracut-network-033-535.el7_5.1.x86_64
NetworkManager-libnm-1.10.2-16.el7_5.x86_64
NetworkManager-1.10.2-16.el7_5.x86_64
入りました。
2.ネットワーク構成
構成は以下のような感じです。
No | Interface | Segment | Destination | 注釈 |
---|---|---|---|---|
1 | eth0 | 10.0.0.0/16 | Gateway | Management |
2 | eth1 | 10.2.22.0/24 | 10.2.22.1 172.31.0.0/20 | Private |
3 | eth2 | x.x.x.x/24 | x.x.x.x | Global |
3.ネットワーク設定
何箇所か設定するところがありますので、一つずつ進めていきます。
3.1ゲートウェイ設定
今回はManagementセグメントにあるFW経由でNATしてサーバーへSSHします。
なのでManagementセグメントをデフォルトゲートウェイに設定します。
ゲートウェイを設定するときは以下の2種類の方法があります。
- /etc/sysconfig/networkに設定する
[root@localhost sysconfig]# pwd
/etc/sysconfig
[root@localhost sysconfig]# cat network
NETWORKING=yes
NOZEROCONF=yes
- /etc/sysconfig/network-scripts/ifcfg-xxのインターフェースに設定する
[root@localhost network-scripts]# more ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=none
DEVICE=eth0
HWADDR=50:6B:8D:E4:F3:DC
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.0.11.137
NETMASK=255.255.0.0
PREFIX=16
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
GATEWAY=10.0.10.1
複数のインターフェースがあり、ゲートウェイはManagementのインターフェースに固定したいので、今回はインターフェースに設定します。
3.2スタティックルート設定
eth1の先に172.31.0.0/20のセグメントがあるので、スタティックルートを設定します。
[root@localhost network-scripts]# nmcli connection modify eth0 ipv4.routes 172.31.0.0/20 10.33.0.1
エラー: 不明な接続 'eth0'.
eth0が認識できないようです。
deviceの状態を確認します。
[root@localhost network-scripts]# nmcli dev
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み System eth0
eth1 ethernet 接続済み System eth1
lo loopback 管理無し --
nmcliコマンドでインターフェースを指定するときはCONNECTIONの表示項目をパラメーターとして
代入します。ですが
[root@localhost network-scripts]# nmcli connection modify System eth0 ipv4.routes 172.31.0.0/20 10.33.0.1
エラー: 不明な接続 'System'.
となりダメでした。
このCONNECTIONはif-cfgxxの「NAME」の設定値を表示しているようなので、設定を入れてみます。
[root@localhost network-scripts]# more ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=none
DEVICE=eth0
HWADDR=50:6b:8d:e4:f3:dc
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.0.11.137
SUBNET=255.255.0.0
NAME="eth0"
設定後に
systemctl restart NetworkManager
systemctl restart network
すると
[root@localhost network-scripts]# nmcli de
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み eth0
eth1 ethernet 接続済み eth1
lo loopback 管理無し --
eth0,1で表示されるようになりました。
[root@localhost network-scripts]# nmcli c mod eth1 ipv4.routes "172.31.0.0/20 10.33.0.1"
[root@localhost network-scripts]# cat route-eth1
ADDRESS0=172.31.0.0
NETMASK0=255.255.240.0
GATEWAY0=10.33.0.1
nmcliコマンドも正常に完了し、ルーティングのファイルもできていました。
だが、ルーティングテーブルをみると
[root@localhost network-scripts]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.10.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 10.0.10.1 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
172.31.0.0 10.33.0.1 255.255.240.0 UG 0 0 0 eth1
eth0とeth1の両方にゲートウェイがあります。
eth0をGatewayに設定したいので、eth1に設定されているGatewayを削除したいと思います。
eth1のconfを見ると
[root@localhost network-scripts]# cat ifcfg-eth1
BOOTPROTO=dhcp
DEVICE=eth1
ONBOOT=yes
TYPE=Ethernet
NAME=eth1
PROXY_METHOD=none
BROWSER_ONLY=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no
UUID=9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04
となっています。
どうやら「DEFROUTE=no」というパラメーターを設定しないとGatewayとして扱われてしまうようです。
なのでこちらを追加して
[root@localhost network-scripts]# cat ifcfg-eth1
BOOTPROTO=dhcp
DEVICE=eth1
ONBOOT=yes
TYPE=Ethernet
NAME=eth1
DEFROUTE=no
PROXY_METHOD=none
BROWSER_ONLY=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no
UUID=9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04
ネットワークを再起動してみると
[root@localhost network-scripts]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.10.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
10.59.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
172.31.0.0 10.59.0.1 255.255.240.0 UG 0 0 0 eth1
ルーティングがきれいに揃いました。
Author And Source
この問題について(CentOS7で複数インターフェースにルーティングを設定する), 我々は、より多くの情報をここで見つけました https://qiita.com/hnakatogawa/items/fc7740042107dac50494著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .