Score:2

QEMU/KVM guest VM ไม่สามารถแก้ไขชื่อโฮสต์ DNS หรือ SSH/ping จากโฮสต์ได้

ธง mx

ฉันมีเครื่องเสมือนที่ใช้ QEMU/KVM พร้อม CentosOS 6.4 ซึ่งไม่สามารถเชื่อมต่อกับอินเทอร์เน็ตได้อย่างสมบูรณ์ ฉันสามารถ ping ที่อยู่ IP (เช่น ปิง 8.8.8.8 ทำงานได้สำเร็จ) แต่ชื่อโดเมนไม่ได้รับการแก้ไข (เช่น ping google.com ผลตอบแทน ping: โฮสต์ที่ไม่รู้จัก google.com).

ผู้เยี่ยมชมมี IP แบบคงที่ที่กำหนดให้กับมัน และฉันกำลังใช้เครือข่ายเริ่มต้น (อิงตาม NAT):

<network>
  <name>default</name>
  <uuid>8c257186-7af4-4e19-a086-27f50f692af6</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:d6:62:2d'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

/run/resolvconf/resolv.conf ไม่มีอยู่ใน VM; และทั้งสองอย่าง resolvconf, nslookup, systemctl, เจ้าภาพ, ชื่อโฮสต์, หรือ เอ็นเอ็มซีแอล มีการติดตั้งโปรแกรม ดังนั้นความสามารถในการเรียกใช้การวินิจฉัยการตั้งค่าเครือข่ายจึงถูกจำกัด

ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

  • แก้ไข /etc/sysconfig/network-scripts/ifcfg-eth0 โดยการเพิ่ม DNS1=8.8.8.8, DNS2=8.8.4.4 และ PEERDNS=ใช่. หลังจากรีบูตเครื่อง สิ่งนี้จะถูกสร้างขึ้น /etc/resolv.confซึ่งเดิมไม่มีอยู่แล้ว
  • การแทนที่ "โฮสต์: ไฟล์ dns" ด้วย "โฮสต์: ไฟล์ dns nisplus nis" ใน /etc/nsswitch.confจากนั้นรีบูตเครื่อง
  • กำลังติดตาม คู่มือนี้ เพื่อสร้างเครือข่ายเฉพาะโฮสต์
  • กำลังติดตาม คู่มือนี้ เพื่อสร้างสะพานเสมือนผ่าน qemu-bridge-helper
  • (นอกจากนี้ ฉันพยายามสร้างการแชร์ไฟล์ระหว่างแขกและโฮสต์ผ่าน คู่มือนี้แต่ต้องใช้ 9p ซึ่งเป็นระบบไฟล์ที่ CentOS 6 ไม่รองรับ)

แต่ในการพยายามแต่ละครั้ง โฮสต์ยังคงไม่สามารถ SSH เข้าสู่/ping แขกได้ และแขกไม่สามารถแก้ไขชื่อโดเมนได้ ความช่วยเหลือใด ๆ ในการบรรลุขั้นตอนใดขั้นตอนหนึ่งจากสองขั้นตอนนี้ (โฮสต์สามารถ SSH เข้าสู่แขกได้; แขกเชื่อมต่อกับอินเทอร์เน็ตอย่างสมบูรณ์) จะเป็นพระคุณอย่างสูง

ต่อไปนี้เป็นเนื้อหาไฟล์/เอาต์พุตบรรทัดคำสั่งที่อาจเป็นประโยชน์ ยินดีให้ข้อมูลเพิ่มเติม

เนื้อหาของ /etc/resolv.conf (แขก):

ตัวเลือก edns0 trust-ad
; สร้างโดย /sbin/dhclient-script
เนมเซิร์ฟเวอร์ 8.8.8.8
เนมเซิร์ฟเวอร์ 8.8.4.4

ผลลัพธ์ของ ไอพี (แขก):

1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
    inet6 ::1/128 ขอบเขตโฮสต์ 
       valid_lft ตลอดไป reserved_lft ตลอดไป


2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast สถานะ UP qlen 1000
    ลิงค์/อีเธอร์ 52:54:00:7b:6c:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.92/22 brd 192.168.123.255 ขอบเขตทั่วโลก eth0
    ลิงค์ขอบเขต inet6 fe80::5054ï¬fe7b:6c27/64
       valid_lft ตลอดไป reserved_lft ตลอดไป

ผลลัพธ์ของ ssh 192.168.122.92 (เจ้าภาพ):

ssh: เชื่อมต่อกับโฮสต์ 192.168.122.92 พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ

ผลลัพธ์ของ ปิง 192.168.122.92 (เจ้าภาพ):

PING 192.168.122.92 (192.168.122.92) 56(84) ไบต์ของข้อมูล
จาก 192.168.122.1 icmp_seq=1 พอร์ตปลายทางไม่สามารถเข้าถึงได้
ping: sendmsg: ไม่อนุญาตให้ดำเนินการ
จาก 192.168.122.1 icmp_seq=2 พอร์ตปลายทางไม่สามารถเข้าถึงได้
ping: sendmsg: ไม่อนุญาตให้ดำเนินการ
จาก 192.168.122.1 icmp_seq=3 พอร์ตปลายทางไม่สามารถเข้าถึงได้
ping: sendmsg: ไม่อนุญาตให้ดำเนินการ
จาก 192.168.122.1 icmp_seq=4 ไม่สามารถเข้าถึงพอร์ตปลายทางได้
ping: sendmsg: ไม่อนุญาตให้ดำเนินการ
^ซี
--- สถิติ ping 192.168.122.92 ---
ส่งแพ็กเก็ต 4 แพ็กเก็ต ได้รับ 0 ข้อผิดพลาด +4 แพ็กเก็ตสูญหาย 100% เวลา 3065ms

แก้ไข 1

เนื้อหาของ /etc/sysconfig/network-scripts/ifcfg-eth0 (แขก):

อุปกรณ์=eth0
HWADDR=52:54:00:7B:6C:27
TYPE=อีเธอร์เน็ต
ONBOOT=ใช่
NM_CONTROLLED=ไม่
BOOTPRONTO=ไม่มี
IPADDR=192.168.122.92
NETMASK=255.255.252.0
เกตเวย์=192.168.122.1
DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS=ใช่

แก้ไข 2

ผลลัพธ์ของ iptables-บันทึก (เจ้าภาพ):

# สร้างโดย iptables-save v1.8.4 ในวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565
* แหลกเหลว
: ยอมรับ [86972:77359835]
: ยอมรับอินพุต [86966:77359331]
:ส่งต่อ ยอมรับ [6:504]
: ยอมรับเอาต์พุต [87805:9060728]
: ยอมรับภายหลัง [69226:7583136]
:LIBVIRT_PRT - [0:0]
-A โพสต์ -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-เติม
ให้สัญญา
# เสร็จสิ้นเมื่อวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565
# สร้างโดย iptables-save v1.8.4 ในวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565
*แนท
:PREROUTING ยอมรับ [4:1038]
: ยอมรับอินพุต [3:954]
: ยอมรับเอาต์พุต [19614:1550200]
: ยอมรับภายหลัง [1032:73142]
:LIBVIRT_PRT - [0:0]
-A โพสต์ -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j ผลตอบแทน
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j กลับ
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-พอร์ต 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j สวมหน้ากาก
ให้สัญญา
# เสร็จสิ้นเมื่อวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565
# สร้างโดย iptables-save v1.8.4 ในวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565
*กรอง
: ยอมรับอินพุต [86966:77359331]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [69220:7582632]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
-อินพุต -j LIBVIRT_INP
-A ส่งต่อ -j LIBVIRT_FWX
-A ส่งต่อ -j LIBVIRT_FWI
-A ส่งต่อ -j LIBVIRT_FWO
-A OUTPUT -j LIBVIRT_OUT
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ยอมรับ
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ยอมรับ
ให้สัญญา
# เสร็จสิ้นเมื่อวันจันทร์ที่ 3 มกราคม 22:03:26 น. 2565

แก้ไข 3

ผลลัพธ์ของ sudo iptables-บันทึก (แขก):

# สร้างโดย iptables-save v1.4.7 ในวันพฤหัสบดีที่ 6 มกราคม 05:53:35 น. 2565
*กรอง
:อินพุต ยอมรับ [0:0]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [0:0]
-อินพุต -p tcp -m tcp --dport 22 -m conntrack --ctstate ใหม่ ก่อตั้ง -j ยอมรับ
-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ยอมรับ
ให้สัญญา
# เสร็จสิ้นเมื่อ พฤ. 6 ม.ค. 05:53:35 น. 2565
another victim of the mouse avatar
> inet 192.168.122.92/**22** brd 192.168.123.255 ขอบเขต global eth0 ดูไม่ค่อยดีสำหรับฉัน เราสามารถเห็น `cat /etc/sysconfig/network-scripts/ifcfg-eth0` ได้หรือไม่ ดูเหมือนว่าคุณใส่หน้ากากตาข่ายไม่ถูกต้องกับแขกของคุณ> NETMASK=255.255.252.0
another victim of the mouse avatar
> inet 192.168.122.92/**22** brd 192.168.123.255 ขอบเขต global eth0 ดูคาวสำหรับฉัน เราสามารถเห็น `cat /etc/sysconfig/network-scripts/ifcfg-eth0` ได้หรือไม่
mx flag
ขอบคุณ @Jacobyoby ฉันเพิ่มข้อมูลเพิ่มเติมด้านบน
another victim of the mouse avatar
เน็ตมาสก์ของคุณไม่ตรงกัน นี่เป็นความตั้งใจหรือไม่?
mx flag
มันไม่ได้ตั้งใจ ฉันได้ตั้งค่า `NETMASK=255.255.255.0` ใน `/etc/sysconfig/network-scripts/ifcfg-eth0` เพื่อให้ตรงกับเครือข่ายเสมือน ตอนนี้ฉันได้รับ `inet 192.168.122.92/24 brd 192.168.122.255 ขอบเขต global eth0` ภายใต้ `eth0` ใน `ip a` ในแขก แต่ DNS ยังไม่สามารถแก้ไขชื่อโดเมน และไม่สามารถเข้าถึง IP ของผู้เยี่ยมชมผ่าน SSH/ping ในโฮสต์ได้
another victim of the mouse avatar
คุณปิดไฟร์วอลล์สำหรับการทดสอบหรือไม่
mx flag
@Jacobyoby @AlexD ไม่ใช่ไฟร์วอลล์ แต่น่าจะเกิดจากกฎสองข้อนี้ใน `iptables`: `-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable` และ `-A LIBVIRT_FWO -i virbr0 - j REJECT --reject-with icmp-port-unreachable` (รายละเอียดเพิ่มเติมด้านบน) อย่างไรก็ตาม ฉันลบออก (เป็นการชั่วคราว) รีบูตเครื่อง VM ของผู้เยี่ยมชม และยังคงได้รับข้อผิดพลาดเดิม
another victim of the mouse avatar
โปรดเพิ่มกฎเพื่ออนุญาต SSH ขาเข้าบนพอร์ต 22 ไปยัง iptables
mx flag
ฉันได้เพิ่มกฎใหม่สองข้อให้กับ iptables ในแขก: `sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT` and `sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT` ฉันยังได้เพิ่ม `sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT` และ `sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT` กับโฮสต์ อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดเดียวกัน ฉันพลาดอะไรไปหรือเปล่า?
another victim of the mouse avatar
คุณสามารถปิดการใช้งาน iptables สำหรับการทดสอบได้หรือไม่?
Score:1
ธง jp

ข้อความแสดงข้อผิดพลาดต่อไปนี้จาก ปิง ระบุว่าการสื่อสารถูกบล็อกโดยไฟร์วอลล์

พอร์ตปลายทางเข้าไม่ถึง
ping: sendmsg: ไม่อนุญาตให้ดำเนินการ
mx flag
ปรากฎว่า VPN เป็นปัญหา แก้ไขปัญหาด้วยการปิด VPN หรืออนุญาตให้แชร์เครือข่ายท้องถิ่นภายใน VPN ตอนนี้ฉันสามารถ ping/SSH ใน guest VM ได้สำเร็จ ขอบคุณทุกคน!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา