KVM वर्चुअल मशीन का IP पता कैसे पता करें, कि मैं इसमें SSH कर सकता हूं?


30

मैं अपने Ubuntu 11.10 सर्वर पर अपने KVM (वर्चुअल मशीन सॉफ्टवेयर) को सेटअप करने के लिए इस गाइड ( वर्चुअलाइजेशन विथ KVM ऑन उबंटू 11.10 ) का अनुसरण करता हूं। हालांकि, मैंने वीएम का उपयोग करते समय वीएम का आईपी एड्रेस सेटअप नहीं किया, इसके बजाय:

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 को VM का IP पता और SSH कहां पा सकता हूं? धन्यवाद।

[नोट्स: मैंने वीएम के आईपी पते को जाने बिना VM को लॉगिन करने में कामयाबी हासिल की है। " Xming + SSH with X ग्राफ़िक फॉरवर्डिंग " का उपयोग करते हुए, लेकिन मेरे वीएम को कोई डीएचसीपी आईपी पता नहीं सौंपा गया है, उपरोक्त प्रश्न के अलावा, मेरे पास एक और सवाल है: मेरे वीएम पर डीसीएचपी को कैसे सक्षम किया जाए ताकि मैं एक्समिंग के माध्यम से लॉगिन करने के लिए उपयोग करूं पुण्य दर्शक "मैं कम से कम अपना आईपी पता देख सकता हूँ।]


मैंने समस्या का पता लगा लिया है और इसे हल कर दिया है। / Etc / नेटवर्क / इंटरफेस में मैंने "नेटवर्क" और "प्रसारण" जानकारी को हटा दिया और डीएचसीपी ने मेरे अतिथि वीएम पर काम किया। अब मैं अपने गेस्ट VM में ssh कर सकता हूं। मुझे लगता है कि मेरा "नेटवर्क XXX.XXX.XXX.XXX" या "प्रसारण XXX.XXX.XXX.XXX" गलत है। इस तरह के सेटअप के लिए गाइड अभी भी अच्छी तरह से काम कर रहा है, बस अपना नेटवर्क वातावरण सेट करते समय सावधान रहें। समस्या सुलझ गई है!!!
जियानलिन

1
libvirt में अब दो कमांड हैं: domifaddr और net-dhcp-leases
Nehal J Wani

कृपया इस लिंक को देखें , आपको एक उत्तर मिलेगा:

जवाबों:


20

आप arp -nदेख सकते हैं कि आपकी वर्चुअल मशीन किस आईपी को उठाती है। इस तरह, आपको अतिथि vm और प्रकार को लॉगिन करने की आवश्यकता नहीं है ifconfig

नीचे दिए गए ब्लॉग में अधिक विवरण हैं और इसमें एक पर्ल स्क्रिप्ट शामिल है जो एक वर्चुअल मशीन का पता खोजने के लिए स्वचालित है।

युक्ति: किसी वर्चुअल मशीन का IP पता खोजें


बहुत आसन। महान ....
इंडिका के

1
उत्तर के लिए xyz वेबपेज पर जाएं यदि लिंक नीचे जाता है तो कोई अच्छा नहीं है, कृपया "पूर्ण उत्तर" पोस्ट करें
FreeSoftwareServers

31

इसे इस्तेमाल करे:

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

यदि आप मैक पते को जानते हैं तो आप निम्नलिखित फॉर्म का भी उपयोग कर सकते हैं:

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

मैक पते को डंपएक्सएमएल कमांड से पाया जा सकता है। देखें कि केवीएम होस्ट में वर्चुअल मशीन से संबंधित वर्चुअल इंटरफ़ेस का निर्धारण करने का एक तरीका है?


5
यह सही जवाब है। बिना किसी हैकिंग के काम करता है। बहुत बहुत धन्यवाद।
chmac

1
"वायर-नेट-लिस्ट" होना चाहिए ... "नेट" और "लिस्ट" के बीच कोई स्थान नहीं। अन्यथा, यह पूरी तरह से काम करता है।
डेव हेन

@DaveHein सही करने के लिए धन्यवाद। उत्तर अपडेट किया गया।
राहुल

यदि आप खाली परिणाम प्राप्त कर रहे हैं, तो sudo
वायरिंग को

6

मुझे लगता है कि यह एक पुराना सवाल है, लेकिन virshअगर आप नेट या ब्रिजित निजी नेटवर्क का उपयोग कर रहे हैं तो यह बहुत आसान है। मेरे पास एक वर्चुअल मशीन है जिसका नाम steakएक (रूटेड) निजी नेटवर्क (AKA "NAT") है। यह पता लगाने के लिए सिर्फ दो कमांड हैं कि आईपी क्या अंतर्निहित तंत्र द्वारा सौंपा गया है:

$ 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

मेरे पास एक और वीएम ( eggs) भी है जो नियमित नेटवर्क से जुड़ा हुआ है (हाइपरवाइजर होस्ट पर एक पुल डिवाइस से जुड़ा हुआ है)। Libvirt इसे एक पता नहीं देता है; इसे मेरे नेटवर्क के डीएचसीपी सर्वर से एक पता मिलता है, जो मेरे मामले में डायनेमिक डीएनएस को भी अपडेट करता है। domifaddइस वीएम के लिए कोई आउटपुट न होने की संभावना एक है । तो, आपको मूल रूप से पता ढूंढना होगा जैसे कि यह कोई अन्य मशीन है - इसे arp टेबल में ढूंढना शायद सबसे आसान है - जिसका अर्थ ip neighbourहै, जैसा कि अब arpहटा दिया गया है और कुछ वितरणों पर मौजूद नहीं है। सौभाग्य से हममें से जो एक्स्ट्रा वॉवेल्स के साथ चीजों को जादू नहीं करते हैं, आप छोटे संस्करणों, जैसे ip neighऔर ip n(या ip neighbor) का उपयोग कर सकते हैं । ;) नीचे, मैं domiflistमैक पते को खोजने के लिए उपयोग करता हूं (ध्यान दें कि यह जुड़ा हुआ है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

5

vms के लिए सूची:

virsh list

नाम से vm मैक प्राप्त करें

virsh domiflist debian8

grep के साथ अपने vm सबनेट का स्कैन (मैक कैपिटल होना चाहिए)

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)

4

यदि आपके पास VM तक कंसोल पहुंच है, तो बस ifconfig -aअतिथि पर चलें । जब आप वहां होते हैं, तो यह सुनिश्चित करने के लिए जांचें कि अतिथि के पास नेटवर्क कनेक्टिविटी है और वह sshdचल रहा है।

यदि आपके पास कंसोल एक्सेस नहीं है, तो संभावना है कि आईपी एड्रेस डीएचसीपी द्वारा सौंपा गया था। एक अन्य मशीन की तलाश करें, जिसमें डीएचसीपी असाइनमेंट भी मिल रहा है, शायद होस्ट सर्वर, और फिर पते में 1 जोड़ें और इसे आज़माएं। वास्तव में, अगले 5 या 6 पतों को आज़माएँ। यदि वह काम नहीं करता है, तो आपके पास एक बड़ा सक्रिय नेटवर्क है और सबनेट में प्रत्येक आईपी पते को आज़माने की आवश्यकता होगी, या निचले स्तर की नेटवर्क समस्या है जैसे कि होस्ट करने के लिए कोई मार्ग नहीं है या एक ही मैक पते के साथ दो होस्ट। या हो सकता है कि आप बस नहीं चले sshd

कंसोल का उपयोग करना इस समस्या को हल करने का सबसे आसान तरीका है।


मैं वास्तव में Xming सर्वर + "पुण्य-दृश्य" कमांड के माध्यम से अपने वीएम से जुड़ने में कामयाब रहा। मैंने पाया कि जब मैं वीएम में हूं तो कोई अतिथि को सौंपा नहीं गया है। डीएचसीपी कैसे काम करता है? किसी भी XML फ़ाइल को मुझे बदलना होगा?
जियानलिन

हाय माइकल, क्या आपको लगता है कि अगर आप मुझे अपने सर्वर तक पहुँच देते हैं तो आप मेरी मदद कर सकते हैं? मैंने डीएचसीपी और स्टेटिक आईपी की कोशिश की, लेकिन अतिथि वीएम को कोई आईपी नहीं मिल रहा है, मेरा होस्ट सर्वर अभी भी इंटरनेट तक पहुंच सकता है। धन्यवाद।
जियानलिन

3

अपने VM / s के IP पते को देखने के लिए बस दौड़ें:

$ arp -n

अगर आपके सिस्टम पर arp स्थापित नहीं है, तो net-toolsपैकेज को स्थापित करें ।


2

इसके साथ अंतर्निहित वीएनसी के माध्यम से कनेक्ट करना संभव है virt-manager, और आप टीटीआई लॉगिन करते हैं, इसके साथ आईपी पता ढूंढें ifconfig eth0। आम तौर पर eth0, जब तक कि आपने अन्यथा निर्दिष्ट नहीं किया है।


2

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>। फिर उनमें वीएम की एक सूची का उपयोग करते हुए वीएम की सूची तैयार करें।

एमएसीएस की सूची सभी वीएम (भी खाली लाइनों को पट्टी) की सूची के द्वारा प्राप्त की जाती है, फिर virsh domiflistउनमें से प्रत्येक के लिए कर रही है, और फिर मैक की तरह दिखने वाले पैटर्न के लिए ग्रीपिंग।

सूत्रों का कहना है:

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


0

यदि आपके पास QEMU (VM एमुलेटर) "i" बटन पर जाएं और "Br0" नेटवर्क से जुड़े नेटवर्क कार्ड की जांच करें। एनआईसी के मैक पते पर ध्यान दें। अब अपने वीएम -> ओपन टर्मिनल -> टाइप: "ifconfig" कमांड को टर्मिनल में लॉगिन करें -> मैक एड्रेस से जुड़े आईपी एड्रेस पर ध्यान दें जो आपने पहले नोट किया है।

अंतिम चरण में आपके द्वारा नोट किए गए IP का उपयोग करके आप पोट्टी या किसी भी ssh क्लाइंट का उपयोग करके अपने VM में प्रवेश कर सकते हैं।


0

मेरे br0 इंटरफ़ेस पर मेरे KVM मेहमान हैं, इसलिए मुझे लगता है कि यह थोड़ा अलग है, लेकिन यहाँ मेरी दो लिपियाँ हैं।

ARP का उपयोग करने के लिए ध्यान दें कि आपको सबसे पहले अपने Arp टेबल में MAC होना चाहिए। पूरे नेटवर्क का एक त्वरित पिंग करने के लिए फ़ैपिंग का उपयोग करने के लिए अपना सर्वश्रेष्ठ प्रयास करें (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

सभी अतिथि आईपी के माध्यम से खोजें:

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

मैंने इस समस्या से अंत में arp-scan किया। उदाहरण: sudo arp-scan --interface = br0 --localnet --bandwidth = 8192000 --numeric --retry = 1 जो कि तब था जब मैं सक्रिय रूप से खोज करना चाहता था। मैंने बैकग्राउंड में बैठने और मेरे लिए एक मैक / आईपी एड्रेस मैपिंग जमा करने के लिए Addrwatch का इस्तेमाल किया।
ड्यूक डगल


0
  1. अपनी डोमेन सूची प्राप्त करें virsh list --all

    virsh # list --all
    
    2     webserver_01                   running
    
  2. डोमेन आईडी या नाम का उपयोग करके अपनी डोमेन इंटरफ़ेस सूची प्राप्त करें virsh domiflist yourDomainId, और आपको डोमेन के इंटरफ़ेस का मैक पता दिखाई देगा।

    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, आपने 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

एक अच्छा समाधान जो कीमू-अतिथि एजेंट का उपयोग करता है।

क) मेजबान पर क्यूमू-अतिथि एजेंट का उपयोग करने के लिए अपने वीएम को कॉन्फ़िगर करें: पुण्य-प्रबंधक के साथ जोड़ें "क्यूमू-अतिथि-एजेंट" चैनल वास्तव में आसान है। मेरे मामले में मशीन को "डेबियन" कहा जाता है, और संशोधित करने के बाद 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

ग) अंत में, यह अच्छा पाइप NAMEOFVMNIC के बजाय eth0, enp1s0, आदि डाल देगा।

virsh domifaddr  --domain yourvmname --source agent|grep -w NAMEOFVMNIC|egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'

-1

(जबकि आप इतने सरल उत्तर के लिए बहुत उन्नत लगते हैं)

मर्जी

$ ifconfig

काम?


इसके अलावा, सावधान रहें, यदि आपके पास एक ही मशीन के डुप्लिकेट इंस्टेंसेस हैं, क्योंकि मशीन में नकली मैक एड्रेस आदि के मुद्दे होंगे ... मैन्युअल रूप से संपादित करने के तरीके हैं (और मुझे लगता है कि इसके लिए एक कमांड भी चलाते हैं)
डेविड

मेरे ubuntu सर्वर होस्ट पर केवल एक VM "vm1" है और "ifconfig" कमांड आउटपुट मेरे "eth0" नेटवर्क एडेप्टर को कोई आईपी पता नहीं दिखाता है।
जियानलिन

हाँ, आपके पास कोई आईपी नहीं है ... क्या आपने "dhclient eth0" की कोशिश की
David

मैंने कोशिश की, लेकिन अभी भी मेरे होस्ट सर्वर से मेरे अतिथि वीएम को dhcp आईपी नहीं मिल रहा है। मेरे होस्ट सर्वर को एक निश्चित आईपी सौंपा गया है और यह इंटरनेट तक पहुंच सकता है।
जियानलिन

यदि आप मूल नेटवर्क पर एक आईपी नहीं चाहते हैं, तो आप bridged के बजाय अपनी vm सेटिंग्स में NAT का चयन करना चाहते हैं।
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.