ネットワーク
この章ではホストのネットワークについて説明します。ホスト自身の管理アドレスの設定と変更、ネットワークページのネットワークと物理ポート、ブリッジと VALE 仮想スイッチ、仮想マシンのネットワーク接続、NIC ごとのファイアウォール、SR-IOV とポートごとのパススルー、開放が必要なポート、そして仮想マシンがネットワークにつながらないときに最初に確認することを扱います。最初のアドレスの取得はインストール、仮想マシン作成時のネットワーク選択は仮想マシン管理を参照してください。
1. 基本概念
- 物理ポート:ホストの LAN ポート(
igb0、ixl1など)です。ネットワークページの 物理ポート に一覧表示されます。 - 管理ポート:ホスト自身のアドレス(Web 画面を開くときに使うアドレス)を持つポートです。インストール時は最初に DHCP でアドレスを取得したポートが選ばれ、あとから変更できます。
- ネットワーク:keel の L2 セグメントです。名前があり、「どの物理ポートに、VLAN タグ付きかどうか」に対応します。仮想マシンの NIC はネットワークに接続するだけでよく、下にどのポートやブリッジがあるかを気にする必要はありません。1 つのネットワークを複数のポートに置くこともできます。
- 1 つのポート上のゲスト用ネットワークには 2 種類のバックエンドがあります。既定はブリッジ(
if_bridgeと仮想 NIC の tap。keel が裏で作成するので、Web 画面で触る必要はありません)で、ポートごとに VALE 仮想スイッチへ切り替えることもできます。§3.4を参照してください。切り替えなければブリッジのままです。 - 仮想マシンの NIC の接続方法は 自動、仮想 NIC、SR-IOV VF、ポートごとパススルー の 4 種類です。§5と§6を参照してください。
2. ホストの管理アドレス
構成 → ネットワーク → マネジメントネットワーク を開きます。
現在の状態 にはホストの各インターフェース(インターフェース、種類、アドレス)が表示されます。種類は ポート、VLAN、ブリッジ、その他 のいずれかで、ゲストが使っているポートには「N 個のゲスト NIC」と表示されます。ケーブルがつながっていないポートは リンクなし と表示されます。keelOS にドライバがない NIC は別に一覧表示され、仮想マシンにパススルーできます。デバイスパススルーを参照してください。
管理アドレスの変更手順:
- 必要なら ホスト名 と ドメイン(任意) を変更します(ホスト名とドメインを合わせたものがホストの正式名で、証明書やブラウザのアドレスに使われます)。インターフェース でアドレスを持たせるインターフェースを選びます。VLAN を使う場合は ポート上の VLAN にチェックを入れ、ポートと VLAN 番号(1〜4094)を指定すると、keel が
ポート.VLANを作成します。 - DHCP か 静的 を選びます。静的の場合は IPv4 アドレス(CIDR)(例:
192.168.1.10/24)、ゲートウェイ、DNS サーバー、検索ドメイン を入力します。DHCP の場合、ゲートウェイと DNS は DHCP から提供されます。IPv6 は オフ、SLAAC(ルーター広告)、または静的(IPv6 アドレス(CIDR)、IPv6 ゲートウェイ)を選べます。 - テストして適用 をクリックします。変更はすぐに反映されますが、古いアドレスはしばらく残ります。画面には、指定された秒数以内に新しいアドレスから確認するよう表示されます。 - 新しいアドレスが開けた場合:ブラウザが証明書を信頼できないと警告します(新しいアドレスはまだ受け入れていないため)。「詳細設定」→「進む」をクリックしてください。新しいアドレスを開けたことが確認になり、この時点で初めて変更が起動パーティションに書き込まれ、自動的にログインされます。 - 新しいアドレスが開けない場合:時間切れになると keel が元の設定に自動で戻し、画面は古いアドレスに戻ります。すぐに取り消したいときは 今すぐ元に戻す をクリックします。
- アドレスを変更すると、keel の証明書には keel serve の次回起動から新しいアドレスが含まれます。
注意:すでにゲストが使っているポートはブリッジのメンバーです。アドレスはブリッジ側に置かれ、ブリッジ自体は変更されません。その旨が画面に表示されます(「……はブリッジ … のメンバーです」)。
注意:設定を誤って画面にもアクセスできなくなった場合は、ホストの画面(コンソール)で
keel host netを使って確認・変更します。初回起動で DHCP がない場合の画面上の質問も、keel host net setupでやり直せます。
ホストの他のネットワーク上のアドレス
ページの下にある 他のネットワーク上のホストのアドレス では、管理アドレスとは別に、特定のネットワーク上でホストに静的 IPv4 アドレスをもう 1 つ持たせることができます。たとえば 10GbE スイッチ上にアドレスを置いて、仮想マシンの移行に使えます。アドレスを追加 で スイッチまたはネットワーク と アドレス(CIDR) を選びます。保存すると、一覧に インターフェース、リンク(速度)、状態(使用中 または 未適用)が表示されます。アドレスはそのネットワークのブリッジに置かれ、仮想マシンは通常どおりそのネットワークを使えます。
管理側(keelMGR)がある場合、このホストへの移行に使うアドレス の既定は 自動 です。管理側は 2 台のホストの両方にアドレスがあるネットワークを選び(リンクが速いものを優先)、なければ管理アドレスを使います。
HTTPS 証明書
構成 → ネットワーク → 証明書 で独自の証明書をインポートできます。インポートするとブラウザの警告が出なくなります。インポートしていない場合は keel 自身の自己署名証明書が使われます。リモートデスクトップ(keel-rdp)は常に keel 自身の証明書を使うため、証明書のインポートや削除で RDP 接続が切れることはありません。
3. ネットワークページ
構成 → ネットワーク には 7 つのサブページがあります。順に ネットワーク、物理ポート、スイッチ、ポートで見つかったもの、トポロジー、マネジメントネットワーク、証明書 です。ページ上部には、ネットワーク・ポート・スイッチに関する構成の問題(たとえば存在しないネットワークに NIC がつながっている)が一覧表示され、修正… ボタンが付きます。構成:問題と詳細を参照してください。
3.1 物理ポートと探索
物理ポート は 1 ポート 1 行で、リンク、スイッチング(ブリッジ または VALE …)、モード(access または trunk)、ネイティブ VLAN、VLAN、検出内容、SR-IOV、スイッチ(相手のスイッチとポート)、用途(何が使っているか)が表示されます。行をクリックすると、MAC、MTU、前回の探索の詳細、VALE 上のゲスト、SR-IOV ポートで使用中の VF が展開されます。モードや VLAN などには ◉(自動検出)または ✎(手動指定)が付きます。
探索 をクリックすると、keel がそのポートで数秒間待ち受けます。スイッチの LLDP/CDP から相手のスイッチとネイティブ VLAN を読み取り、各 VLAN 上のトラフィックからサブネット、ルーター、DHCP サーバーを調べます。「DHCP DISCOVER を送信(アドレスは占有しません)」にチェックを入れると、より正確になります。探索は待ち受けるだけで、設定は一切変更しません。
- スイッチが LLDP/CDP を送っていない場合は スイッチが LLDP/CDP を送っていません:スイッチとネイティブ VLAN は手動で設定してください と表示されます。編集 をクリックして、モード、タグ付き VLAN(
10,20、空欄=探索結果、none=なし)、ネイティブ VLAN 番号、スイッチとポート を入力します。手動で入力したものには ✎、探索で検出したものには ◉ が付きます。 - VALE にする / ブリッジに戻す:そのポート上のゲスト用ネットワークのバックエンドを切り替えます。§3.4を参照してください。
- クリア は探索結果を消去します(ポートやゲストには影響しません。もう一度探索すれば元に戻ります)。手動入力も含めてまとめて消すこともできます。
3.2 ポートで見つかったもの
ポートで見つかったもの は、探索結果を候補のネットワークとしてまとめたものです。同じ DHCP サーバー、ルーター、サブネット、または同じホスト群を同一のネットワークとみなします。各候補には 根拠 が表示され、作成 をクリックするとそのネットワークが作られます。すでにあるものは「既存:名前」と表示されます。まだ探索していない場合は「先に物理ポートを探索してください」と表示されます。
3.3 ネットワークの作成
- ネットワーク サブページの 新規ネットワーク をクリックします(ホストの書き込み権限が必要です)。
- 名前:小文字、数字、
_が使え、先頭は英字、最大 12 文字です(例:lan、office_2)。作成後に名前は変更できません。 - ポート:ポートを選び、VLAN 番号を入力します(
0=タグなし)。+ ポート でさらに追加できます。 - 必要に応じて サブネット と メモ を入力し、保存 をクリックします。
ネットワークのカードには、所属するポートと、そこにつながっている各仮想マシンの NIC(どの仮想マシンのどの NIC か、接続方法)が表示されます。実行中のものは実際につながっているポート(仮想 NIC · igb0:100)とその理由も表示され、実行していないものは 停止中 と表示されます。仮想マシンが使っているネットワークは 削除 できません。
注意:あるネットワークを初めてポートに置き、しかも タグなし の場合、keel はそのポートのオフロード(TSO、チェックサム)を無効にするため、ポートが数秒間リセットされます。ホストの管理アドレスがそのポートにある場合は、画面が一時的に切断されることがあります。ダイアログで事前に警告されます。
どのポートにも置かれていないネットワーク(画面には ポートなし:内部ネットワーク、その guest 同士だけ通信 と表示)は内部ネットワークです。つながっている仮想マシン同士だけが通信でき、外部には出られません。
トポロジー サブページには、左に物理ポート、中央にネットワーク、右に仮想マシンの NIC を並べた図が表示されます。
3.4 スイッチ:VALE 仮想スイッチ
既定では、各ポート上のゲスト用ネットワークはブリッジです。物理ポート で VALE にする をクリックすると、そのポート上のゲスト用ネットワークは VALE 仮想スイッチ経由で転送されるようになります(ゲスト同士の通信が速くなり、ポートごとに VLAN や分離を設定でき、カウンターと MAC テーブルも使えます)。どちらのバックエンドでも、ネットワークページや仮想マシンの NIC 設定の使い方は同じです。
- 切り替え時にはそのポートのリンクが数秒間切れます(スイッチで STP が有効だと最大 1 分ほど)。ホストのアドレスがそのポートにある場合も同様です。確認ダイアログで事前に警告されます。実行中の仮想マシンは、再起動後に切り替わります。
- ブリッジに戻す 前に、その VALE スイッチにつながっている仮想マシンを停止しておく必要があります。
- このボタンがあるのはホストの物理ポートだけです。VLAN サブポートなどから派生したポートにはありません。
VALE を使うポートは、スイッチ サブページでは 1 台の仮想スイッチ(vs0 など)として表示されます。該当するポートがない場合、サブページには「仮想スイッチはありません……」と表示されます。
スイッチ サブページには 3 つのビューがあります。
- ポート:スイッチごとに表があり、ポート、説明、状態(接続済み、未接続、シャットダウン)、Guest、モード が表示されます。既定では、有効なポート、説明があるポート、ゲストがつながっているポートだけを表示します。すべて見るには 空きポートも表示 にチェックを入れます。アップリンク(物理ポートへの接続)とホストポートも表に含まれます。ポートの編集をクリックして、ダイアログで ポートを有効にする(no shutdown)、説明、モード(access または trunk)、Access VLAN(
0はアップリンクのタグなしトラフィック)、trunk の 許可 VLAN と Native VLAN、ポート分離(分離されたポートは、分離されていないポートとだけ通信できます)を設定します。候補に入れる を押した時点では、まだ何も変わりません。 - running-config:同じ設定のテキスト表示です(Arista EOS 構文)。全体を編集して 候補に入れる こともできます。
- カウンターと MAC テーブル:各ポートの送受信パケット数、バイト数、ドロップ数(理由別)と、直近 5 分間に学習した MAC アドレステーブルです。VLAN、MAC、ポートで絞り込めます。
変更は 2 段階です。まず候補に入れると、画面に「候補の設定があります」と差分が表示されます。コミット をクリックして初めて有効になり、破棄 をクリックすると候補を捨てます。コミット後には確認の制限時間があります(画面に「前回のコミットが確定されない場合、… 自動でロールバックします」と表示されます)。制限時間内に コミットを確定 をクリックしなければ、keel がコミット前の状態に自動でロールバックします。設定を誤って自分自身を締め出してしまうのを防ぐためです。編集を取り消す は、ダイアログでまだ候補に入れていない編集を破棄します。ポートの VLAN、モード、分離はコミット時に実行中のゲストにすぐ反映されます。ポートの無効化は、その仮想マシンの再起動後に有効になります。
注意:1.0 では、Web 画面から仮想マシンを作成するときに
vs0の特定のポートを選ぶことはできません。NIC をそのポートのあるネットワークにつなぐと、空きポートが自動的に割り当てられます。ポートを指定したい場合は、仮想マシンの設定に記述します(コマンドライン keelを参照)。
4. 例:オフィスネットワークに分離された VLAN を追加する
スイッチ側で igb0 が trunk ポートで、ネイティブ VLAN がオフィスネットワーク、VLAN 20 がゲスト用の場合:
- 物理ポート で
igb0の 探索 をクリックし、オフィスネットワーク(タグなし)と VLAN 20 が検出されたことを確認します。 - ポートで見つかったもの でオフィスネットワークの 作成 をクリックし、名前を
lanにします。続けて、名前guest、ポートigb0、VLAN20のネットワークを作成します。 - 仮想マシンを作成するとき、NIC に
lanまたはguestを選びます。
5. 仮想マシンをネットワークにつなぐ
新規作成ウィザードの ネットワーク ステップ、または詳細ページの 編集 → ネットワーク で、各 NIC に 3 つのドロップダウンがあります。
- ネットワーク:つなぐネットワーク。一覧には スイッチ 名前 や ブリッジ 名前 が表示されることがあります。これは以前にコマンドラインや API で作成したものです。Web 画面の ネットワーク ページで作るのは「ネットワーク」です。ホストにネットワークが 1 つもない場合、このステップで ネットワーク ページで作成するよう案内されます(入力済みの内容は保持されます)。
- 接続方法:自動(仮想 NIC。ホストの reload 時にその仮想マシンが停止していて、ネットワークに空きの VF がある場合は VF を使います)、仮想 NIC、SR-IOV VF、ポートごとパススルー。
- モデル:
virtio-net(高速。Linux は標準ドライバ、Windows は virtio-win ドライバのインストールが必要)、e1000、pcnet。VF やパススルーの場合、モデルは選びません。
+ NIC で NIC を追加し、✕ で削除します。MAC は keel が生成し、クローン時に再生成されます。詳細ページを展開すると、各 NIC の MAC とホストから見える IP を確認できます。
ネットワークの変更はすぐに反映され、ゲストのリンクは切れません(ネットワークのセグメントを変えた場合は、ゲスト内で DHCP を更新してください)。モデルや接続方法の変更、NIC の追加・削除は、次回の再起動後に反映されます。NIC がつながっているネットワーク、スイッチ、ブリッジがすでに存在しない場合、仮想マシンは起動できません。詳細ページに表示されるので、存在するものに変更してください(構成 → 問題 にも表示されます)。
NIC ごとのファイアウォール
仮想マシンの詳細ページでは、各 NIC の下に ファイアウォール の行があります。既定は オフ(すべて通す) で、有効にしていない NIC には負荷が一切かかりません。変更(読み取り専用アカウントでは 見る)をクリックするとダイアログが開きます。
- この NIC をフィルタする(下で許可したもの以外の受信は拒否) にチェックを入れます。
- 許可する受信(1 行に 1 つ):
プロトコル[/ポート][@送信元]の形式で書きます。例:tcp/22@lan、tcp/8000-8100@any、[email protected]/24、udp/53。プロトコルはtcp、udp、icmp(ping のみ)、anyのいずれかです。送信元はany、lan(既定。他のゲストは含みません)、guests、またはアドレス/CIDR です。 - 送信 は次のいずれかを選びます:インターネットのみ、インターネットと LAN、応答のみ(受信した接続への応答だけを許可)。
- 追加で許可する送信(1行に1つ):上の設定に加えて許可するもので、
[プロトコル[/ポート]@]宛先の形式で書きます。宛先はkeelauth、frontdoor、app:アプリ名、guests、lan、またはアドレス/CIDR です。例:tcp/[email protected]。名前は仮想マシンの起動時にアドレスに解決されます。
許可された接続の応答は両方向で通ります。ARP、DHCP、IPv6 近隣探索は常に許可されます。ダイアログと NIC の行には、今回の起動以降にブロックした受信・送信の数と、現在の接続数が表示されます。変更はその仮想マシンの次回起動時に有効になります。それまでは、ダイアログに「guest は次回起動まで元のルールで動作します」と表示されます。
注意:NIC の接続方法が SR-IOV VF またはポートごとパススルーの場合、トラフィックはホストを経由しないため、ファイアウォールは使えません。接続方法が 自動 の場合、ファイアウォールを有効にした NIC は VF を使いません。kcell アプリの受信ポートはアプリのテンプレートで決まり、アプリのカードに表示されます。kcell アプリを参照してください。
フロントドアは kcell アプリの 1 つで、他のアプリに https アドレスを提供します。アプリ自身のファイアウォールはフロントドアからの接続だけを受け付けます。インストールと使い方はkcell アプリを参照してください。
ルーター型の仮想マシン
OpenWrt、OPNsense、RouterOS のような仮想マシンの場合:
- オフィスネットワークにつなぐポートは最大 1 つです(ネットワーク 1 つか VF 1 つで、両方は不可)。残りのポートは、このホスト内だけの分離されたネットワークにつなぎます。ルーターイメージは、WAN 以外のポートをすべてブリッジでまとめるのが既定であることが多く、オフィスネットワークに通じるポートを 2 つつなぐとループになり、オフィス全体のネットワークが止まります。ウィザードは、ルーターのテンプレートでは複数の NIC を同じネットワークにつなぐことを許可しません。
- 仮想 NIC は既定で自分の MAC からしか送信できません(ループ防止)。仮想マシン内でブリッジ、VRRP、コンテナの macvlan を動かすとパケットが破棄されます。Web 画面にはこのフィルタを無効にするスイッチはまだありません。必要な場合は、仮想マシンの設定に
allow_mac_spoofingを指定してください(コマンドライン keelを参照)。
6. SR-IOV とポートごとのパススルー
- SR-IOV VF:対応する NIC(Intel X710、X550、I350 など)は、1 つの物理ポートを複数の仮想ポート(VF)に分割でき、各 VF を 1 台の仮想マシンにパススルーできます。ゲスト内では実際の NIC のドライバが使われ、性能は最高です。構成 → SR-IOV では、各ポートに「VF:作成済み N 個 / 最大 M 個」と表示され、VF 数 で個数を設定します。各 VF には固定の MAC、VLAN、使用しているゲストが表示されます。
- VF をあるネットワークで使うには:NIC の接続方法で SR-IOV VF を選びます。VF のあるポートがそのネットワークに含まれている必要があります。
- ポートごとパススルー:NIC 全体を 1 台の仮想マシンに渡します。先に 構成 → PCI パススルー で 確保 します。
注意:VF を持つ仮想マシンは、ホストの reload 時には一時停止ではなく、シャットダウンして再起動されます。デバイス全体をパススルーしているものだけが一時停止されます。VF 数を変更すると、通常そのポートのリンクが再ネゴシエートされ、スイッチの STP により約 30 秒通信できなくなります。ホストがそのポートを使っている場合は、約 30 秒ネットワークが切れると警告されます。
詳細はデバイスパススルーを参照してください。
7. ポートとファイアウォール
keelOS ホスト自身は「任意のポート」を開放しません。お使いのファイアウォールやルーターで開放が必要なのは次のとおりです。
| 用途 | ポート | 説明 |
|---|---|---|
| keel の Web 画面と API | HTTPS 443 | 仮想マシンの VNC コンソールも Web 画面内にあり、このポートを使います。 |
| リモートデスクトップ(RDP) | 仮想マシンごとに 1 ポート | ポートは仮想マシン詳細ページの RDP 行に表示されます。 |
| keelRM | 自身のアドレスの HTTPS 443 | 以下を参照。 |
keelRM は独立した管理ポートで、サーバーの BMC のようなものです。ホストの別の LAN ポートを使い、専用のアドレスを持ちます。ページは https://<そのアドレス>/ で、80 番にアクセスするとそちらに転送されます。アドレスは keelRM の設定で DHCP か固定アドレス(アドレス/プレフィックス、ゲートウェイ)を選び、ページに表示されます。ホストのポートとアドレスは変わりません。詳しくは keelRM 管理ポートを参照してください。
8. 10GbE ネットワーク
- 10GbE ポートも 1GbE ポートと同じように使います。ホストの管理アドレスやネットワークに特別な設定は不要です。
- 移行用の 10GbE スイッチには、§2の 他のネットワーク上のホストのアドレス でアドレスを設定します。
- X550 などの
ixポートでは、VF 数の既定の上限があります。SR-IOV ページの「設定する(再起動後に有効)」で上限を上げられますが、ホストの再起動が必要です。 - 10GbE 専用のチューニング項目は画面にありません。
9. 仮想マシンがネットワークにつながらない
次の順に確認してください。
- NIC がつながっているネットワークはまだあるか:仮想マシン詳細ページの NIC 行に赤字で「存在しません」と出ていないか確認します。構成 → 問題 で修正できます。
- ネットワークが正しいポートに置かれているか:ネットワーク ページで、そのネットワークのポートと VLAN を確認します。VLAN 番号はスイッチ側と一致している必要があります。不明なときは 物理ポート で 探索 します。
- スイッチのポート:スイッチ側のポートは trunk か access か。trunk ならその VLAN を許可しているか。ポートの リンク があるか。
- ゲスト内:Windows の
virtio-netには virtio-win ドライバが必要です。入れていないと NIC が見えません。DHCP でアドレスを取得できない場合は、ネットワーク ページのカードでその NIC が「実際につながっているポート」を確認し、物理ポート の 検出内容 でその VLAN に DHCP があるかを確認します。 - VF を使う仮想マシン:VF のあるポートの VLAN がネットワークの VLAN と一致していること。ゲスト内に VF のドライバがあること(OpenWrt の標準イメージには iavf がないため、
kmod-iavfをインストールします)。 - オフィスネットワーク全体が遅い、または止まった:ルーター型の仮想マシンが、オフィスネットワークに 2 つのポートで同時につながっていないか確認します。§5を参照してください。
- ホスト自身の Web 画面に入れない:§2の復旧方法を参照してください。急ぐ場合は、ホストの画面で
keel host netを使います。
さらに詳しい切り分けはトラブルシューティングとログを参照してください。
10. 1.0 で対応しないこと
- VALE はまだ既定のバックエンドではありません。ポートは既定でブリッジで、ポートごとに手動で VALE にする(§3.4)必要があります。VALE スイッチはアップリンクが 1 つだけで、ミラーポートには対応していません。
- ホストには NAT や DHCP サービスはなく、ホスト単位・ネットワーク単位のファイアウォールもありません(あるのは NIC ごとのファイアウォールだけです)。必要な場合はルーター型の仮想マシンを動かしてください。§5を参照してください。
- Web 画面にはポートのボンディング(LAG/LACP)はありません。STP は無効で、ループ防止は仮想 NIC の送信元 MAC フィルタに頼っています。