SoftetherのVirtual NICをNetworkManagerで管理してDHCPから取得

投稿者: | 6月 14, 2025

はじめに

UbuntuのデスクトップでNetworkManagerでIPのDHCPからの自動取得ができずに困っていました。一応、dhclientで取得はできるのですが、再起動すると戻ってしまうので困っていました。そこで、NetworkManagerで、コネクションを割り当てしようとしましたが、
エラー: 接続のアクティベーションに失敗: No suitable device found for this connection (device eno1 not available because profile is not compatible with device (mismatching interface name)).
などと出てしまい、接続できませんでした。それの解決が今回の課題です。

結論

NetworkManagerが自動で生成するコネクションがダメダメ
connection.typeがtunではなくethernetに
tun.modeが2(tap)ではなく1(tun)に
設定されたたせいです。

手順

Softether自体は接続済みで、DHCPから取得だけ行いたい場合を想定しています。
vpn_vpnはSoftetherの仮想インターフェースの名前です。

1. 接続されていないことの確認
$ nmcli device show vpn_vpn
GENERAL.TYPEがtun、GENERAL.STATEが切断済みとなっていることを確認
既に接続されている場合はsudo nmcli connection down vpn_vpnとかで落とします。

2. 既に存在する仮想Nic用コネクションを確認
$ nmcli connection show
たぶん、netplan-vpn_vpnみたいなのが存在すると思います。覚えておいてください。

3. 既に存在する仮想Nic用コネクションを削除
$ sudo nmcli connection delete netplan-vpn_vpn
先ほど確認した既に存在するコネクションを削除します。

4. 新たにコネクションをtun用として作成
$ sudo nmcli connection add type tun con-name netplan-vpn_vpn ifname vpn_vpn
コネクション名は何でも良いですが、消したものと同じ名前にしています。

5. tunモードを変更
$ sudo nmcli connection modify netplan-vpn_vpn tun.mode 2
1(tun)から2(tap)に変更します。

6. 適用
$ sudo nmcli connection up netplan-vpn_vpn
これでアクティベートされれば完了です。

IPアドレスの固定

固定したい場合は、/etc/netplaneに保存されているyamlを直接編集もしくは、手順5の様にすればできます。nmcli connection showで確認できるuuidがファイル名の一部になっています。詳しい手順は自分で、「NetworkManager IP 固定」で調べてください。

解決した方法

dhclientで取得すると、GENERAL.STATEが100 (接続済み (外部))となり、正しいコネクションが生成されます。それを、nmcli device show vpn_vpnで見て、自動生成されたものと見比べました。はじめは、connection.typeが802-3-ethernetになっていたので、tunに変更しました。しかし、それでも
エラー: 接続のアクティベーションに失敗: Failed to find a compatible device for this connection
と出てしまうので、更に見比べて、tun.modeが1(tun)になっていたのを2(tap)に変更しました。これで解決しました。

おわりに

半日かかりましたが、なんとかなってよかったです。シェルスクリプトをかいてsystemdで実行する方法もありますが、あまりにもエレガントさに欠けるのでやめました。
ちなみに、Ubuntuだとデスクトップ付きだと、NetWorkManagerのようで、Server版では、Netplane(systemd-networkd)っぽいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)