web-dev-qa-db-ja.com

KVM仮想マシンのSSHアドレスを指定できる仮想マシンのIPアドレスを見つける方法は?

私はこのガイド( KVM Ubuntu 11.10の場合 )に従って、UbuntuにKVM(仮想マシンソフトウェア))をセットアップしました11.10サーバーただし、VMの作成時に、次のものを使用する代わりに、VMのIPアドレスを設定していません。

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --Arch=AMD64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --ip=192.168.0.101 --gw=192.168.0.1 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

私が使用しました:(コマンドラインから「--ip = 192.168.0.101 --gw = 192.168.0.1」を削除しました)

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --Arch=AMD64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

ガイドの指示どおりにネットワークブリッジをセットアップし、新しいVMのインターフェイスをネットワークブリッジに接続しました。

KVMは私のVMをDHCP経由で割り当てますが、新しいVMのIPアドレスに関する情報がありません。VMのIPアドレスはどこにありますか。新しいVMにSSHで接続しますか?ありがとう。

[注意:VM VMのIPアドレスを知らずにログインできました。 " Xming + SSH with X Graphic Forwarding "を使用しますが、DHCPはありませんVMに割り当てられたIPアドレス、上記の質問に加えて、ここで別の質問があります:VMで、Xmingを使用して「virt viewer」経由でログインする場合、少なくとも私のIPアドレスが表示されていることを確認してください。]

31
Xianlin

arp -n仮想マシンが取得するIPを確認します。このように、ゲストvmにログインしてifconfigを入力する必要はありません。

以下のブログには詳細があり、仮想マシンのアドレスの検索を自動化するPerlスクリプトが含まれています。

ヒント:仮想マシンのIPアドレスを検索

21
chenwj

これを試して:

virsh net-list
virsh net-dhcp-leases <net-name>   <--- net-name from above command

MACアドレスがわかっている場合は、次のフォームを使用することもできます。

virsh net-dhcp-leases <net-name> --mac <mac-address>

MACアドレスは、dumpxmlコマンドで確認できます。参照 kvmホストの仮想マシンに属する仮想インターフェースを特定する方法はありますか?

31
Rahul

これは古い質問だと思いますが、現在のバージョンのvirshを使用すると、NATまたはブリッジプライベートネットワークを使用している場合にこれがはるかに簡単になります。 (ルーティングされた)プライベートネットワーク(別名「NAT」)にsteakという名前の仮想マシンがあります。組み込みメカニズムによって割り当てられたIPを見つけるためのコマンドは2つだけです。

$ Sudo virsh list
 Id    Name                           State
----------------------------------------------------
 21    steak                          running

$ Sudo virsh domifaddr steak
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      76:0c:28:ab:0e:ee    ipv4         10.14.1.1/24

また、別のVM(eggs)があり、これは通常のネットワークにブリッジされています(ハイパーバイザーホストのブリッジデバイスに接続されています)。Libvirtはアドレスを割り当てません。ネットワークのDHCPサーバーからアドレスを取得します。これは、私の場合も動的DNSを更新します。これは、このVMのdomifaddからの出力がない場合の1つの可能性です。したがって、基本的には、任意のアドレスを見つける必要があります他のマシン-arpテーブルでそれを見つけるのがおそらく最も簡単です。つまり、arpが廃止され、一部のディストリビューションには存在しないため、ip neighbourが今は意味します。余分な母音で物事を綴る、ip neighip n(またはip neighbor)などの短いバージョンを使用することもできます。以下では、domiflistを使用してMACを検索しますアドレス(「ソース」列のbr0に接続されていることに注意してください)を検索し、arpテーブルでそれを見つけます。

$ Sudo virsh domifaddr eggs
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

$ Sudo virsh domiflist eggs
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:2c:ac:ee

$ ip neigh | grep -i 52:54:00:2c:ac:ee
192.168.0.226 dev br0 lladdr 52:54:00:2c:ac:ee REACHABLE
$ Host eggs
eggs.home.domain.com has address 192.168.0.226
6
dannysauer

vmsのリスト:

virsh list

名前からVM MACを取得

virsh domiflist debian8

grepを使用してVMサブネットのスキャンを実行します(MACは大文字にする必要があります)

nmap -sP 10.0.0.0/24 | grep 52:54:00:FD:1F:92 -B 3 

結果

Nmap scan report for 10.0.0.173
Host is up (0.0012s latency).
MAC Address: 52:54:00:FD:1F:92 (QEMU Virtual NIC)
5
Antonín Vrba

VMへのコンソールアクセス権がある場合は、ifconfig -aゲストに。そこにいる間、ゲストにネットワーク接続があり、sshdが実行されていることを確認してください。

コンソールにアクセスできない場合は、DHCPによってIPアドレスが割り当てられている可能性があります。 DHCP割り当てを取得している別のマシン(おそらくホストサーバー)を探し、アドレスに1を追加して試してください。実際、次の5つまたは6つのアドレスを試してください。それが機能しない場合は、大規模なアクティブネットワークがあり、サブネット内のすべてのIPアドレスを試す必要があるか、ホストへのルートがないか、同じMACアドレスを持つ2つのホストのような下位レベルのネットワークの問題があります。あるいは、sshdが実行されなかっただけかもしれません。

この問題を解決するには、コンソールを使用するのが最も簡単な方法です。

4
Michael Dillon

VMのIPアドレスを確認するには、次のコマンドを実行します。

$ arp -n

Arpがシステムにインストールされていない場合は、net-tools パッケージ。

3
Alxs

Sudo nmap -sn 192.168.5.0/24 | awk '/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}' | fgrep -if <(virsh list --name | grep . | while read n; do virsh domiflist $n; done | grep --only-matching ..:..:..:..:..:..)

サブネットをスキャンします。出力をawkで解析して、<IP> <MAC>のような行を取得します。次に、VMのMACのリストを使用してそれらをgrepします。

MACのリストを取得するには、すべてのVMをリストし(空の行も削除します)、各VMに対してvirsh domiflistを実行し、MACのように見えるパターンをgreppingします。

出典:

https://serverfault.com/a/669862/284568

2
Velkan

組み込みのVNCを介してvirt-managerで接続することが可能です。ttyログインを実行し、ifconfig eth0でIPアドレスを検索します。特に指定しない限り、通常はeth0。

2
daisy

Qemu-guestエージェントを使用する素晴らしいソリューション。

a)ホストでqemu-guestエージェントを使用するようにvmを構成します:virt-managerで「qemu-guest-agent」チャネルを追加するのは本当に簡単です。私の場合、マシンは「Debian」と呼ばれ、変更後のxmlは次のようになります。この。

 <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-3-debian/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel1'/>
      <address type='virtio-serial' controller='0' bus='0' port='2'/>
    </channel>

b)ゲストにqemu-guest-agentをインストールし、開始されていることを確認します

apt -y install qemu-guest-agent

systemctl status qemu-guest-agent.service
● qemu-guest-agent.service - LSB: QEMU Guest Agent startup script
   Loaded: loaded (/etc/init.d/qemu-guest-agent; generated; vendor preset: enabled)
   Active: active (running) since Sat 2019-01-26 09:35:57 CET; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1624 ExecStop=/etc/init.d/qemu-guest-agent stop (code=exited, status=0/SUCCESS)
  Process: 1630 ExecStart=/etc/init.d/qemu-guest-agent start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/qemu-guest-agent.service
           └─1638 /usr/sbin/qemu-ga --daemonize -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0

c)最後に、この素​​敵なパイプはNAMEOFVMNIC put eth0、enp1s0などの代わりにipを返します。

virsh domifaddr  --domain yourvmname --source agent|grep -w NAMEOFVMNIC|egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
1
elbarna
  1. virsh list --allでドメインリストを取得

    virsh # list --all
    
    2     webserver_01                   running
    
  2. virsh domiflist yourDomainIdを使用してドメインIDまたは名前でドメインインターフェースリストを取得すると、ドメインのインターフェースのMACアドレスが表示されます。

    virsh # domiflist 2
    
    bridge     br0        virtio      52:54:00:42:be:96
    
  3. nmapを使用してnmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B 2でLANをスキャンすると、IPアドレスが取得されます。

    [root@kvm-master ~]# nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B2 
    
    Nmap scan report for bogon (192.168.1.210)
    Host is up (0.00013s latency).
    MAC Address: 52:54:00:42:BE:96 (QEMU Virtual NIC)
    
0
lupguo

私はKVM br0インターフェイスにゲストを持っているので、少し違うと思いますが、これが私が作成した2つのスクリプトです。

ARPを使用するには、最初にMACをArpテーブルに含める必要があります。そのため、fpingを使用してネットワーク全体をすばやくpingするのが最善です(2秒ほどかかります)。これにより、Arpキャッシュが最新の状態になります。

apt-get install fping
yum install fping

:を介して単一のゲストIPを検索

cat << 'EOF' > ~/findip.sh
#!/bin/bash
#FreeSoftwareServers.com

echo "Finding All Active IP's in Network via single Ping"
sleep 2s

fping -a -g 192.168.1.0/24
#nmap -sn 192.168.1.0/24

echo "Please Enter the Exact Name of the VM Guest:"

read guestname

arp -na | awk -v mac=$(virsh domiflist $guestname | awk '$2=="bridge"{print $NF}') '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}'
EOF
chmod +x ~/findip.sh
Sudo sh -c 'echo "alias findguestip=~/findip.sh" >> ~/.bashrc'
source ~/.bashrc
findguestip

すべてのゲストIPを検索:

cat << 'EOF' > ~/findallips.sh
#!/bin/bash
#FreeSoftwareServers.com

echo "Finding All Active IP's in Network via single Ping"
sleep 2s

fping -a -g 192.168.1.0/24
#nmap -sn 192.168.1.0/24

domainlog=/tmp/domain.log

virsh list --all | grep running |  cut -c 8- >> "$domainlog"

sed -i 's/running*//g' "$domainlog"

readarray domain < "$domainlog"

for i in "${domain[@]}"
do
ip="$(arp -na | awk -v mac=$(virsh domiflist $i | awk '$2=="bridge"{print $NF}') '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}')"
echo "Hostname : $i IP : $ip"
done
rm "$domainlog"
EOF
chmod +x ~/findallips.sh
Sudo sh -c 'echo "alias findallips=~/findallips.sh" >> ~/.bashrc'
source ~/.bashrc
findallips
0

QEMU(VMエミュレーター)を使用している場合は、[i]ボタンをクリックして、「Br0」ネットワークに関連付けられているネットワークカードを確認します。 NICのMACアドレスをメモします。 VM->ターミナルを開く->タイプ:ターミナルで「ifconfig」コマンドを入力します->先ほどメモしたMacアドレスに関連付けられたIPアドレスをメモします。

VM PuTTYまたは任意のSSHクライアントを使用して、最後のステップでメモしたIPを使用してログインできます。

0
saurav

get-vm-ipスクリプト(これは https://github.com/earlruby/create-vm/blob/master/get-vm-ip で入手可能)を使用してIPを取得します。

HOSTNAME=[your vm name]
MAC=$(virsh domiflist $HOSTNAME | awk '{ print $5 }' | tail -2 | head -1)
arp -a | grep $MAC | awk '{ print $2 }' | sed 's/[()]//g'
0
Earl Ruby