私はAMD64ノートブックでGentoo Linuxを実行しており、KVMでホストネットワーキングを設定するのに非常に困難です。すでにKVM、libvirtd、virt-manager、仮想化操作に必要なカーネルモジュールがあり、次のように新しい設定オプションでカーネルを再構築しました。このガイドはここにあります、まだホストネットワークを操作できないようです。
virt-managerを使用して仮想マシンを作成できますが、仮想マシンに接続するネットワークインターフェイスを選択することはできません。 virt-managerの詳細オプションの下の最後のダイアログボックスでは、「ネットワークなし」を除くドロップダウンボックスのすべてのオプションが無効になります。 「および「共有デバイスの命名」。インターネットの送信はWi-Fi NIC経由で行われるため、ブリッジネットワーキングは使用できません。
それでも KVM でネットワーキングを実行できません。過去にOracle VM VirtualBoxを使用する際に多くの問題があったため、使用したくありません。私が逃したものは何ですか?
答え1
私は簡単なスクリプトを使用してプライベートブリッジ(インターネットシャットダウンなし)に自分のqemuデバイスを設定し、ホストからのトラフィックを偽装します。
/usr/sbin/brctl addbr qemu1
NET=10.116.64 # any private address you like
GW=1
BASE=0
MASK=24
ip addr add $NET.$GW/$MASK dev qemu1
ip link set qemu1 up
if iptables -t nat -L POSTROUTING -n | grep ^MASQUERADE | awk '{print $4}' | cut -d/ -f1 | grep "$NET.$BASE" >/dev/null
then
echo "IP masquerading already set up"
else
echo "Setting up IP masquerading"
iptables -t nat -A POSTROUTING -s "$NET.$BASE"/"$MASK" \! -d "$NET.$BASE"/"$MASK" -j MASQUERADE
fi
sysctl net.ipv4.ip_forward=1
exit 0
各マシンに設定するために別の簡単なスクリプトを使用します。USER をユーザーとして使用して仮想マシンを起動します。
#!/bin/sh
BRCTL=/usr/sbin/brctl
regif=$($BRCTL show $2|awk '/^\t/ { print $1; }' |grep "$1")
if [ x"$3" = "xstop" ]
then if [ x"$regif" != "x" ]
then
ip link set $1 down
/usr/sbin/openvpn --rmtun --dev $1
fi
elif [ x"$regif" = "x" ]
then
/usr/sbin/openvpn --mktun --dev $1 --user USER
ip link set $1 promisc on
ip link set $1 up
$BRCTL addif $2 $1
elif [ x"$3" = "xrestart" ]
then
$0 $1 $2 stop # recursive call
$0 $1 $2 # recursive call
fi
exit 0
qemu-newif NAME_FOR_THE_TAP_DEVICE qemu1
各マシンにタップユニットを設定して呼び出されます。