#author("2026-02-19T19:11:19+09:00","default:nobuoki","nobuoki")
#author("2026-02-19T19:12:36+09:00","default:nobuoki","nobuoki")
Ubuntu 25.04 でのお話

参考:[[mr/rockyでvlan]]

* netplan を使う [#w1a8c7f2]

** シンプルな vlan 追加 [#l428e693]

#prism(bash){{{
$ diff -u 90-NM-d4735e4b-9bfa-3052-b1c4-ef3302803c9a.yaml new.yaml
--- 90-NM-d4735e4b-9bfa-3052-b1c4-ef3302803c9a.yaml     2025-10-08 21:56:51.493179616 +0900
+++ new.yaml    2025-10-08 21:56:11.370205647 +0900
@@ -25,3 +25,13 @@
           ipv6.method: "disabled"
           ipv6.ip6-privacy: "-1"
           proxy._: ""
+  # --- ここからVLAN設定の追加 ---
+  vlans:
+    enp0s31f6.100: # VLANインターフェース名 (親インターフェース名.VLAN_IDが慣例)
+      id: 100 # VLAN ID (VID)
+      link: enp0s31f6 # 親となる物理インターフェース
+      addresses: [192.168.100.155/24] # 付与したいIPアドレス
+      # デフォルトゲートウェイは不要なため、gateway4やroutesセクションは設定しません。
+      renderer: NetworkManager # 親と同じrendererを指定 (NetworkManagerで管理させる)
}}}

からの

#prism(bash){{{
sudo netplan try
sudo netplan apply
}}}

** bridge も作る例 [#k3dd1530]

[mr/rockyでvlan] と同じ構成を作る例

#pre(){{{
>(VLAN100 untag) enp1s0 ─ br0 ─ VMやコンテナをぶら下げる
>(VLAN1 tagged)  vlan1@enp1s0 ─ br1 ─  VMやコンテナをぶら下げる
}}}

yaml作成

#prism(yaml){{{
tee 99-custom.yaml <<'EOF'
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp1s0:
      dhcp4: false
      # 物理ポートにはアドレスを振らず、ブリッジのメンバーにする

  vlans:
    vlan1:
      id: 1
      link: enp1s0
      # VLAN IFにもアドレスを振らず、ブリッジのメンバーにする

  bridges:
    br0:
      interfaces: [enp1s0]
      dhcp4: false
      addresses:
        - 192.168.100.15/24
      parameters:
        stp: false  # 一般的なホストなら false でOK

    br1:
      interfaces: [vlan1]
      dhcp4: false
      addresses:
        - 192.168.1.193/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.55
          - 192.168.1.199
      parameters:
        stp: false
EOF
}}}

反映

#prism(bash){{{
# 退避
sudo mkdir -vp /etc/netplan/backup
sudo mv -vt /etc/netplan/backup/ /etc/netplan/90-NM-3fc91611-2585-3063-ac16-0d3e7c50d8c3.yaml
sudo mv -vt /etc/netplan/backup/ /etc/netplan/50-cloud-init.yaml

# 新たなファイルを配置
sudo cp -v 99-custom.yaml /etc/netplan/
sudo chmod 600 /etc/netplan/*.yaml
ls -l /etc/netplan/

# 反映
sudo netplan try
}}}




* 以下、失敗の歴史 [#yc95a941]

** nmcliで失敗する [#o4cec9f6]

#prism(bash){{{
sudo nmcli connection add type vlan con-name enp0s31f6.100 ifname enp0s31f6.100 dev enp0s31f6 id 100
sudo nmcli connection modify enp0s31f6.100 ipv4.addresses 192.168.100.155/24
sudo nmcli connection modify enp0s31f6.100 ipv4.method manual
sudo nmcli connection modify enp0s31f6.100 ipv4.never-default yes
sudo nmcli connection up enp0s31f6.100
}}}

ってやると、最後の最後で

#prism(bash){{{
エラー: 接続のアクティベーションに失敗: Failed to find a compatible device for this connection
}}}

** ipだと一応うまくいく [#d2f86e9e]

#prism(bash){{{
sudo ip link add link enp0s31f6 name enp0s31f6.100 type vlan id 100
sudo ip addr add 192.168.100.155/24 dev enp0s31f6.100
sudo ip link set enp0s31f6.100 up
ip a s enp0s31f6.100
}}}

vlan-ifは作れるんだけど、nmcliの管理下ではないのでOSリブートで飛ぶ。むむむ。

** なぜ? [#w069c4b5]

#prism(bash){{{
$ nmcli dev s
DEVICE           TYPE      STATE            CONNECTION
enp0s31f6        ethernet  接続済み         netplan-enp0s31f6
}}}

vlan-ifの接続デバイスが、netplanで管理されているので、nmcliコマンドでうまくハンドリングできない



nmcliで見ると enp0s31f6.100 が出来ている・・・のだが、connection.autoconnect と ipv4.never-default がイマイチ

** あがき [#k27cc827]

途中までipコマンドで作って、nmcliでちょこっと変更する

#prism(bash){{{
sudo ip link add link enp0s31f6 name enp0s31f6.100 type vlan id 100
sudo ip addr add 192.168.100.155/24 dev enp0s31f6.100
sudo nmcli connection modify enp0s31f6.100 connection.autoconnect yes
sudo nmcli connection modify enp0s31f6.100 ipv4.never-default yes
sudo nmcli connection modify up enp0s31f6.100
}}}

やってみれば分かるけど、nmcliの管轄外になってうまくいかない

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS