その昔、KemaNet(Google 検索)というソフトウェアを作っていた人の、自分用メモのサイトです。
|
<<
2026.2
>>
[Stories] |
||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Ubuntu 25.04 でのお話
$ 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で管理させる)
からの
sudo netplan try
sudo netplan apply
[mr/rockyでvlan] と同じ構成を作る例
>(VLAN100 untag) enp1s0 ─ br0 ─ VMやコンテナをぶら下げる >(VLAN1 tagged) vlan1@enp1s0 ─ br1 ─ VMやコンテナをぶら下げる
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
反映
# 退避
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
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
ってやると、最後の最後で
エラー: 接続のアクティベーションに失敗: Failed to find a compatible device for this connection
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リブートで飛ぶ。むむむ。
$ nmcli dev s
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet 接続済み netplan-enp0s31f6
vlan-ifの接続デバイスが、netplanで管理されているので、nmcliコマンドでうまくハンドリングできない
nmcliで見ると enp0s31f6.100 が出来ている・・・のだが、connection.autoconnect と ipv4.never-default がイマイチ
途中までipコマンドで作って、nmcliでちょこっと変更する
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の管轄外になってうまくいかない
(VLAN100 untag) eno1 ─ br0 ─ vnet0/vnet1 (VM) <- 作成済み (VLAN1 tagged) eno1.1 ─ br1 ─ (LXD/docker の veth) <- これから作る
一般的には vlan1 が untag なことが多いのでちょっと混乱しますけど、意図的です、すみません
RockyLinux9.7で確認
ブリッジ作ってVMやコンテナを刺すつもり
# 1) 既存の設定があれば削除
# br1-port-vlan1は以降出てきませんが、気にしないで下さい
nmcli connection delete br1 vlan1 br1-port-vlan1 br1-slave-vlan1 2>/dev/null || true
# 2) ブリッジ br1 の作成 (Static IP)
# 作成と同時に設定を流し込むことで、DHCPの割り込みを防ぎます
nmcli connection add type bridge con-name br1 ifname br1 \
ipv4.method manual \
ipv4.addresses 192.168.10.158/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns 192.168.10.1 \
ipv4.never-default no \
ipv6.method ignore
# 3) vlan1 (eno1.1) を「br1のスレーブ」として作成
# ここで master br1 を指定し、ipv4.method disabled にすることで L2 透過に専念させます
nmcli connection add type vlan con-name br1-slave-vlan1 ifname eno1.1 \
dev eno1 id 1 master br1 \
ipv4.method disabled \
ipv6.method ignore
# 4) br0 側のデフォルトルート優先度を下げる(必要に応じて)
# br0が既に存在することを前提としています
nmcli connection modify br0 ipv4.never-default yes
# 5) 設定の反映
nmcli connection up br1-slave-vlan1
nmcli connection up br1
# 1) VLAN1 サブインターフェース作成
ip link add link eno1 name eno1.1 type vlan id 1
ip link set eno1.1 up
# 2) br1 作成
ip link add br1 type bridge
ip link set br1 up
# 3) eno1.1 を br1 に接続
ip link set eno1.1 master br1
# 4) IP を br1 に付与
ip addr add 192.168.10.158/24 dev br1
# 5) default route を VLAN1 側へ
ip route replace default via 192.168.10.1 dev br1
良し悪しは別として、
どのディレクトリに居ても確実に npx hoge が通るようにしたい
そうだ、~/npm を普段のプロジェクトルートにしてしまおう!
# パッケージリストの更新
sudo apt update
# Node.jsとnpmのインストール
sudo apt install -y nodejs npm
# 利用可能なNode.jsのバージョンを確認
sudo dnf module list nodejs
# 特定のバージョン(例:24)を有効化
sudo dnf module enable nodejs:24 -y
# インストール
sudo dnf install -y nodejs
# リポジトリ追加スクリプトの実行(Node.js 22 LTSの場合)
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
# インストール
sudo dnf install -y nodejs
# package.json がなければ作成(警告を避けるため)
[ -f ~/npm/package.json ] || (mkdir -vp ~/npm || true; cd ~/npm && npm init -y)
こうしておくと、どのディレクトリに居ても
npm --prefix ~/npm install prettier
npx --prefix ~/npm prettier ...
のように ~/ を基準にモジュールを呼び出すことができる
なのでaliasやシェル関数を定義しておくと楽
npm(){ command npm --prefix ~/npm "$@"; }
npx(){ command npx --prefix ~/npm "$@"; }
# prettierのPHPプラグインをインストール
npm --prefix ~/npm install prettier @prettier/plugin-php
# 参考:prettierの設定ファイルを作成
tee ~/.prettierrc.yaml <<EOF
plugins:
- "@prettier/plugin-php"
# バージョン指定が必要な場合はアンコメント
#phpVersion: "8.1"
singleQuote: true
trailingCommaPHP: true
EOF
# カレントディレクトリ以下の php ファイルを整形&上書き
npx --prefix ~/npm prettier --write '**/*.php'