Qubes OS
Z
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Qubes OS のネットワーク設定を理解する
Qubes OS の sys-net / sys-firewall の役割、ファイアウォールルールの設定、VMごとに異なるネットワーク経路を設定する方法を解説します。
一言結論
Qubes OSのネットワークはsys-net→sys-firewallの2層構造が基本で、特定のVMをオフラインにするにはqvm-prefs vault netvm ''と設定するだけであり、ネットワーク経路をVM単位で制御できるのが最大の利点だ。
Qubes OS のネットワーク構成
インターネット
↓
sys-net(ネットワークカードを管理)
↓
sys-firewall(ファイアウォール)
↓
work / personal / untrusted(AppVM)
sys-net
- 物理ネットワークカード(Wi-Fi / 有線)を管理
- DHCP クライアントが動いている
- インターネットに直接面しているため、最も攻撃を受けやすい
- ここが侵害されても、sys-firewall が壁になる
sys-firewall
- AppVM とインターネットの間のゲートウェイ
- VM ごとのファイアウォールルールを適用する
- ここを経由することで AppVM は直接インターネットに面しない
ネットワーク設定の確認
# dom0 ターミナルで
qvm-ls --all -O name,netvm,ip,dns
# 特定のVMのネットワーク設定
qvm-prefs work netvm
qvm-prefs work ip
VM ごとのネットワークを変更する
# ネットワークなしに変更(vault など)
qvm-prefs vault netvm ''
# sys-whonix 経由(Tor)に変更
qvm-prefs anonymous-work netvm sys-whonix
# 特定のVMにネットワークを提供する別VMを指定
qvm-prefs custom-vm netvm my-vpn-gateway
GUI からの変更: Qubes Manager → VM 選択 → Settings → Basic → Networking
ファイアウォールルールの設定
AppVM ごとに接続できるホスト・ポートを制限できます。
Qubes Manager → VM 選択 → Firewall rules タブ
コマンドラインでのファイアウォール設定
# work VM に接続先を制限する例
qvm-firewall work list # 現在のルール確認
# 特定のIPへの接続だけを許可(それ以外は拒否)
qvm-firewall work add allow dsthost=192.168.1.100 proto=tcp dstports=443
qvm-firewall work add deny # デフォルト拒否
# ルールを削除
qvm-firewall work del 0 # 最初のルールを削除
ファイアウォールルールの例
# メールクライアント用VM: SMTPとIMAPだけ許可
allow proto=tcp dstports=465 # SMTP over SSL
allow proto=tcp dstports=993 # IMAP over SSL
deny # それ以外は拒否
# 開発用VM: GitHubだけ許可
allow dsthost=github.com proto=tcp dstports=443
allow dsthost=api.github.com proto=tcp dstports=443
deny
VPN の設定
VPN 専用 ProxyVM の作成
# VPN ゲートウェイ VM を作成
qvm-create --template fedora-40 --label green sys-vpn
# この VM を ネットワーク提供元に設定
qvm-prefs sys-vpn netvm sys-net
# sys-vpn を通じてインターネットに接続する VM を設定
qvm-prefs work netvm sys-vpn
OpenVPN の設定(sys-vpn 内で)
# sys-vpn のターミナルで
sudo dnf install -y openvpn
# VPN プロバイダの設定ファイルを配置
sudo cp vpn-config.ovpn /etc/openvpn/
# 接続
sudo openvpn /etc/openvpn/vpn-config.ovpn
Qubes OS では起動時に自動で VPN 接続させるスクリプトを /rw/config/rc.local に記述できます。
DNS 設定
# VM 内での DNS 確認
cat /etc/resolv.conf
# カスタムDNS(Qubes Firewall 経由)
# /rw/config/rc.local に追加
echo "nameserver 1.1.1.1" > /etc/resolv.conf
Tor 経由の匿名通信(Whonix)
# sys-whonix を経由する VM を設定
qvm-prefs anonymous-browser netvm sys-whonix
詳細は Whonix の記事で解説します。
ネットワークトラブルシューティング
# sys-net 内でネットワーク確認
qvm-run sys-net "ip addr show"
qvm-run sys-net "ping -c 3 8.8.8.8"
# AppVM 内でネットワーク確認
qvm-run work "curl -s https://httpbin.org/ip"
# ファイアウォールのログ確認
qvm-run sys-firewall "sudo journalctl -u qubes-firewall -n 50"
まとめ
Qubes OS のネットワーク設計の要点:
- ネットワークを扱う VM(sys-net)は分離されている
- VM ごとに異なるネットワーク経路を設定できる
- ファイアウォールルールで接続先を制限できる
- VPN や Tor を特定の VM だけに適用できる
この柔軟性が Qubes OS の大きな強みです。「この VM はこのネットワーク経路だけ使う」という設計が実現できます。