物理NICはひとつしかない、でもサブネットを多重化したい。そんなときに便利なのがタグVLANですね。
家庭用(アンマネージドスイッチ)で用意するのは難しいかも知れませんが、タグVLANを使えるスイッチがあればホストをまたがって構成できます。
VirtualBoxの場合はブリッジで接続するなどすればVMでもタグVLANが到達します。
また、同じくVirtualBoxでは内部ネットワークを構成した場合にもタグを通すようですが、Hyper-Vはゲスト側で付けたタグを無視するようなので構成できません。
物理スイッチを使う場合を絵で描くとこんな感じ。VMの仮想NICで構成していますが、物理の場合も基本は同じです。
ホストをまたぐ場合、対象のホストを接続する物理スイッチにはネイティブVLANとタグVLANを構成しておきます。利用する予定のVLAN IDをtrunkに設定しておかないと、スイッチがパケットを通してくれません。タグなし(untag)パケットはネイティブVLANに疎通します。
Ubuntu17以降、netplanの場合は、特に追加のインストールをすることなくVLANを構成できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $ sudo vi /etc/netplan/50-cloud-init.yaml (例) # This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: eth0: addresses: [] dhcp4: true eth1: addresses: [192.168.20.1/24] dhcp4: false vlans: vlan.100: id: 100 link: eth1 addresses: [192.168.100.1/24] version: 2 |
上記の例では、vlans
のセクションにインタフェース名(特に厳しい制限はない)を書き、さらにVLAN IDや定義する(非VLAN)インタフェースなどの属性値を記載します。IPアドレスの設定方法はほかのインタフェースと同じですね。
この構成では、OSが二つのNIC(eth0, eth1)を認識し、さらにeth1側にVLAN ID=100のタグを吐く仮想的なNICを定義しています。環境に合わせて変更して下さい。
現状のインタフェースを確認するにはip a
やip l
コマンドを使用します。
1 2 3 4 5 6 7 8 9 | $ ip l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:yy:yy:yy brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:xx:xx:xx brd ff:ff:ff:ff:ff:ff 4: vlan.100@enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:xx:xx:xx brd ff:ff:ff:ff:ff:ff |
上記のようにYAMLを書いて保存したら、あとはnetplanを通じて設定を適用するだけです。
1 2 | $ sudo netplan --debug generate $ sudo netplan apply |
おわり。