Ubuntu16.04で複数ネットワークの設定
の18.04版。
Ubuntuは17からネットワーク設定が/etc/network/interfacesではなく/etc/netplanに変わった。
#環境
Ubuntu18.04(Windows Server2012 r2内のHyper-V上)
Hyper-Vの仮想スイッチマネージャーで複数のNICを設定
(NICが複数ある実サーバでも可)
#ネットワーク構成
IPアドレスとネットワークアドレス
eth0(NIC#1)に192.168.1.1/24(WAN側)
eth1(NIC#2)に10.10.0.1/16(内部側)
を割り当てる。
スタティックルートとしては以下のような構成とする。
10.0.0.0/8(つまり第一オクテットが10の場合)はNIC#2のルータに
その他の場合(WAN:インターネット)はNIC#1を通る。
スタティックルートはroute addでもいけると思うが、
netplanで設定する方法としての一例。
INTERNET
|
192.168.1.254(デフォゲ・ルータ)
|
192.168.1.1/24(eth0,NIC#1)
Ubuntu18.04
10.10.0.1/16(eth1,NIC#2)
|
10.10.0.254(NIC#2側のルータ)
#ネットワークの確認
$sudo lshw -short -class network
このような表示が出てくる
H/W path Device Class Description
==================================================
/1 eth0 network Ethernet interface
/2 eth1 network Ethernet interface
#/etc/netplan/
50-cloud-init.yamlというファイルがあるが、
「cloud-initはAWS EC2 などの cloud instance に対して、設定や拡張性を提供するためのパッケージです」
らしい。
参考:https://hiroki.jp/config-cloud-init
名前がそぐわない気がするので、これはこれでバックアップとし、
network.yamlファイルを作ってやる。
※netplanは/etc/netplanにある*.yamlファイルを読み込むので*.yaml_bakはスルーする。
sudo cp 50-cloud-init.yaml network.yaml #コピー
sudo mv 50-cloud-init.yaml 50-cloud-init.yaml_bak #バックアップ
以下は/etc/netplan/network.yamlで話を進める
sudo pico /etc/netplan/network.yaml
ipアドレスはipv4のみとします。
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [192.168.1.1/24]
gateway4: 192.168.1.254
nameservers:
addresses: [192.168.1.254]
dhcp4: no
dhcp6: no
eth1:
addresses: [10.10.0.1/16]
dhcp4: no
dhcp6: no
routes:
- to: 10.0.0.0/8
via: 10.10.0.254
注意点
1.デフォゲを明確にするため、eth0のgatewayのみ記載する。
2.yamlファイルなのでスタティック・ルーティングの記載は、インデントに気を付けること。インデントにtabは使わない。半角スペースで。
3.加えて、インデントを間違うとSyntaxエラーになる。
例えば routes:の次行の「- to:」はインデントするとNG。routes:と同じ階層にする。
#以下はダメな例
routes:
- to: 10.0.0.0/8
via: 10.10.0.254
#設定の反映
書式チェックもしてくれる。
sudo netplan apply