物理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 | 
おわり。
