Score:1

วิธีเรียกใช้ dnsmasq ภายใน QEMU โดยให้บริการเน็ตบูตแก่ VM อื่น ๆ

ธง ph

แก้ไข: WIP: สาเหตุหลักสำหรับความล้มเหลวที่อธิบายไว้ด้านล่างเกิดจากฉันไม่ได้เปิดอินเทอร์เฟซโฮสต์ TAP ในเวลาที่เหมาะสม หากฉันอนุญาตให้ QEMU จัดการการสร้างอุปกรณ์แตะ ทุกอย่างจะทำงานตามที่คาดไว้ ฉันจะตรวจสอบความล้มเหลวในรายละเอียดเพิ่มเติมและให้คำอธิบายที่ชัดเจนยิ่งขึ้นเกี่ยวกับปัญหาเมื่อฉันได้รับ ขอบคุณ @anx สำหรับคำแนะนำ!

เป้าหมาย: วิ่ง dnsmasq ภายในโฮสต์ QEMU VM ที่ให้บริการเน็ตบูท จาก QEMU VM อื่นที่ทำงานบนโฮสต์

ฉันต้องการให้ dnsmasq VM ทำหน้าที่เป็นเกตเวย์ โดยมี NIC หนึ่งตัวเป็น อินเทอร์เฟซ WAN อัปสตรีมพร้อมเซิร์ฟเวอร์ DHCP อัปสตรีม และอื่นๆ อินเทอร์เฟซ LAN ส่วนตัว ซึ่ง VM อื่น ๆ จะเป็น "เสียบ" และจะ netboot จาก dnsmasq ที่ฟังส่วนตัวนี้ อินเทอร์เฟซ LAN

ก่อนอื่น เพื่อให้ VM คุยกันได้ ฉันสร้างสะพานของตัวเอง บนโฮสต์

ip link เพิ่มชื่อ vivianbr0 ประเภทบริดจ์
ลิงค์ ip ตั้งค่า vivianbr0 ขึ้น

เพื่อให้ VM คุยกันผ่านโฮสต์บริดจ์ ฉันจะต้องมีสองอย่าง แตะอุปกรณ์ หนึ่งรายการสำหรับอินเทอร์เฟซ LAN ส่วนตัวบนเกตเวย์ VM และ อีกอันสำหรับอินเทอร์เฟซเครือข่ายเดี่ยว VMs ส่วนตัว

ip tuntap เพิ่มโหมด tap tap0 ผู้ใช้ cturner
ip tuntap เพิ่มโหมด tap tap1 ผู้ใช้ cturner
ลิงค์ ip ตั้งค่า tap0 ขึ้น
ลิงค์ ip ตั้งค่า tap1 ขึ้น
ip link ตั้ง tap0 master vivianbr0
ip link ตั้ง tap1 master vivianbr0

สำหรับเกตเวย์ VM ฉันใช้ Arch Linux ISO เพื่อการทดสอบ VM ถูกบูทด้วย NIC สองตัว ดังนั้น

 qemu-ระบบ-x86_64 \
    -ไฟล์ไดรฟ์ = arch-disk.qcow2,if=none,id=nvm \
    -device nvme,serial=deadbeef,drive=nvm \
    -cdrom archlinux-2021.09.01-x86_64.iso \
    -บูต d \
    -device virtio-net-pci,romfile=,netdev=net0,mac="DE:AD:BE:EF:00:11" \
    -device virtio-net-pci,romfile=,netdev=net1,mac="DE:AD:BE:EF:00:12" \
    `# จำลองการเสียบสายเคเบิล "อัปสตรีม" ด้วยโหมดเครือข่ายผู้ใช้` \
    -ผู้ใช้ netdev,id=net0,hostfwd=tcp::60022-:22,hostfwd=tcp::8080-:80,hostfwd=tcp::8081-:8000,hostfwd=tcp::2375-:2375 \
    `# และตอนนี้ถอดปลั๊กด้วยเครือข่าย TAP` \
    -netdev แตะ,id=net1,ifname=tap0,script=no,downscript=no \
-เน็ตบริดจ์ br=วิเวียนbr0 \
    -m 4G \
    -เปิดใช้งาน-kvm

เมื่อเครื่องนี้บูทแล้ว ฉันเห็นสิ่งต่อไปนี้ในการกำหนดค่าบริดจ์

brctl แสดง vivianbr0 

ชื่อบริดจ์ รหัสบริดจ์ อินเทอร์เฟซที่เปิดใช้งาน STP
vivianbr0 8000.46954a1ad851 ไม่แตะ0
                            แตะ1
                            แตะ 2

ผมถือว่า แตะ 2 ถูกสร้างขึ้นโดย QEMU...

ภายใน VM นี้มีสอง ifaces ens4 กับแมค DE:AD:BE:EF:00:11 และ ens5 กับ MAC DE:AD:BE:EF:00:12. ภายในนี้ VM ฉันเริ่ม dnsmasq,

ip addr เพิ่ม 10.42.0.1/24 dev ens5
dnsmasq -d --dhcp-range=10.42.0.10,10.42.0.100 --dhcp-script=/bin/echo --enable-tftp=ens5 --interface=ens5

สิ่งนี้เริ่มต้นโดยไม่มีข้อผิดพลาด

ตอนนี้ฉันพยายาม netboot VM อื่น เริ่มต้นบนโฮสต์แบบนี้

qemu-ระบบ-x86_64 \
-เครื่อง pc-q35-6.0,accel=kvm \
-m 1024 -smp 2, ซ็อกเก็ต = 2, แกน = 1, เธรด = 1 \
-netdev แตะ,id=net0,ifname=tap1,script=no,downscript=no \
-อุปกรณ์ virtio-net-pci,netdev=net0,bootindex=1,mac=DE:โฆษณา:BE:EF:00:13 \
-เน็ตบริดจ์ br=วิเวียนbr0 \
- เปิดใช้งาน kvm \
-vga เวอร์ทีโอ

แต่มันไม่สามารถบูตได้ ฉันตรวจสอบ วิเวียนbr0 โดยใช้ tcpdump และ สามารถดูคำขอ DHCP แต่ไม่มีการตอบกลับ ไม่มีอะไรไปถึง dnsmasq ที่รันภายใน VM แรก

tcpdump -i vivianbr0 -nN
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v[v]... สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง vivianbr0, ประเภทลิงก์ EN10MB (Ethernet), ความยาวสแน็ปช็อต 262144 ไบต์
12:21:39.585229 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:13 ความยาว 397
12:21:40.587741 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:13 ความยาว 397
12:21:40.700038 IP6 fe80::6ce2:2aff:fe94:ba48.5353 > ff02::fb.5353: 0 [7q] PTR (QM)? _nfs._tcp.local พีทีอาร์ (QM)? _ftp._tcp.local. พีทีอาร์ (QM)? _webdav._tcp.local. พีทีอาร์ (QM)? _webdavs._tcp.local. พีทีอาร์ (QM)? _sftp-ssh._tcp.local พีทีอาร์ (QM)? _smb._tcp.local. พีทีอาร์ (QM)? _afpovertcp._tcp.local. (118)
12:21:42.619968 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:13 ความยาว 397
12:21:46.684448 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:13 ความยาว 397
12:22:30.609555 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:12, ความยาว 289
12:23:33.796148 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:12, ความยาว 289
12:24:38.673364 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, คำขอจาก de:ad:be:ef:00:12 ความยาว 289

ฉันเห็นคำขอ BOOTP จาก de:ad:be:ef:00:13 (netbooting VMs MAC addr) และจาก de:ad:be:ef:00:12 (NIC ส่วนตัวของเกตเวย์ VM) ซึ่งระบุว่ามีการกำหนดค่าบางอย่างไม่ถูกต้อง

ฉันจะทำงานนี้ได้อย่างไร

Nikita Kipriyanov avatar
za flag
จะเกิดอะไรขึ้นถ้าคุณฟังทราฟฟิก DHCP บน tap0 (พอร์ตบริดจ์) ควรแสดงรหัสบริดจ์ที่เปลี่ยนไปยังพอร์ตนั้น ตรวจสอบตารางที่อยู่ MAC ของบริดจ์ระหว่างการร้องขอ มันเติมด้วย MAC ที่จำเป็นหรือไม่? อย่างไรก็ตาม บริดจ์โดยค่าเริ่มต้นจะตั้งค่าการหน่วงเวลา STP มาตรฐาน ซึ่งหมายความว่าพอร์ตเริ่มส่งต่อทราฟฟิกเพียง 30 วินาทีหลังจากถูก "ขึ้น" ในการตั้งค่าบริดจ์ของคุณ ฉันไม่เห็นว่าคุณเปลี่ยนสิ่งนี้หรือปิดใช้งาน STP ที่ไหนเลย และสุดท้าย VM ที่ควรจะบูทจาก dnsmasq VM: ใช้พอร์ตบริดจ์ใด ต้องมีอินเทอร์เฟซการแตะอื่นภายในบริดจ์สำหรับ VM ที่สอง
ph flag
@anx เกี่ยวกับ `-netdev brdige` สิ่งนี้ตอบคำถามได้อย่างไร อนุญาตให้ฉันแนบอุปกรณ์ tap เข้ากับบริดจ์ *ที่มีชื่อต่างกัน* แต่ปัญหาคือฉันต้องใช้ QEMU เพื่อพร็อกซีอุปกรณ์ของแขกไปยังบริดจ์โฮสต์ เพื่อให้ dnsmasq ภายใน VM สามารถให้บริการคำขอที่จัดการโดยโฮสต์บริดจ์ได้
ph flag
@NikitaKipriyanov ฉันตอบคำถามแรกของคุณในการแก้ไข STP ไม่ได้วิ่งบนสะพาน ฉันไม่รู้วิธีตรวจสอบตารางที่อยู่ MAC ของบริดจ์ในระหว่างการร้องขอ ดูเหมือนว่าปัญหาที่ง่ายกว่าของอินเทอร์เฟซที่ไม่สามารถนำขึ้นมาได้
ph flag
@anx เกี่ยวกับการเรียกใช้ `dnsmasq`การแยกย่อยค่อนข้างซับซ้อน แต่ VM เกตเวย์ของฉันตั้งชื่ออินเทอร์เฟซทั้งสองตามกฎนี้: อินเทอร์เฟซใดก็ตามที่ตอบสนองต่อคำขอ DHCP จะตั้งชื่อว่า 'สาธารณะ' ส่วนอีกอันหนึ่งเป็น 'ส่วนตัว' ในการปรับใช้จริง อินเทอร์เฟซสาธารณะเชื่อมต่อกับเซิร์ฟเวอร์ DHCP อัปสตรีม ไม่ใช่อินเทอร์เฟซส่วนตัว จากนั้นคำสั่ง `dnsmasq` ก็เป็นไปตามที่ฉันเขียนไว้ในคำถามของฉัน แต่ด้วย `--interface=private`
anx avatar
fr flag
anx
ฉันชอบที่คำถามของคุณกล่าวถึงขั้นตอนทั้งหมดที่พยายาม แต่ฉันสงสัยว่าข้อเท็จจริงสำคัญนั้นค่อนข้างถูกบดบังด้วยเวอร์ชันที่แตกต่างกัน .. โปรดเพิ่มสแนปชอตที่สอดคล้องกันของสถานการณ์ปัจจุบันให้กับคำถามของคุณ (ทั้ง qemu cmdlines, dnsmasq cmdline และทั้งหมด 3 เอาต์พุตจาก `ip a l`)?
ph flag
@anx ใช่ ฉันต้องจัดการอุปกรณ์แตะด้วยตัวเองจริงๆ ฉันพยายามพูดให้สั้นที่สุดเท่าที่จะทำได้ แต่ทำได้ไม่ดีนัก พอจะบอกว่า... มีเหตุผล :)
ph flag
@anx "dnsmasq on the guest" ไม่สามารถใช้งานได้ด้วยเหตุผลเดียวกัน dnsmasq บน `tap0` แทนที่จะเป็น `br0` ไม่ทำงาน นี่เป็นตัวอย่างที่ย่อเล็กสุดตามคำขอของคุณ หากฉันเริ่ม dnsmasq ภายใน QEMU VM ด้วย `-netdev tap,id=net1,ifname=tap0,script=no,downscript=no` แสดงว่าเป็นพฤติกรรมเดียวกันกับตัวอย่างที่ฉันให้ไว้ในคำถามของฉัน มีเพียงส่วนเพิ่มเติม ระดับทางอ้อมระหว่าง ifface เครือข่ายของผู้เยี่ยมชมและโฮสต์แตะ
Tom Yan avatar
in flag
คุณไม่สมเหตุสมผลเลยจริงๆ การผูก dnsmasq เข้ากับการแตะบนโฮสต์ (ซึ่งไม่สมเหตุสมผลที่คาดว่าจะไม่ทำงาน) ไม่มีส่วนเกี่ยวข้องกับการมี VM ที่ใช้งาน dnsmasq (ซึ่งเชื่อมโยงกับ NIC เสมือนจริงภายใน VM) โดยไม่คำนึงว่าคุณจะมีหลังหรือไม่ ทำงาน. ไม่มีการทดสอบจุด / การตรวจสอบข้าม / การแก้ไขปัญหาด้วยวิธี "ง่าย" ของคุณ เนื่องจากไม่ใช่การทำให้ง่ายขึ้นเลย
Tom Yan avatar
in flag
สิ่งแรกที่ฉันนึกถึงคือ qemu จะไม่แจกแจงหรือสุ่มที่อยู่ MAC ของแต่ละ VMจะเป็น `52:54:00:12:34:56` เสมอหากไม่ได้ตั้งค่า / เปลี่ยนแปลงอย่างชัดเจนด้วยตัวเลือก qemu คุณอาจต้องการให้แน่ใจว่าคุณได้แก้ไขแล้ว ด้วยตัวเลือก qemu ที่สอดคล้องกัน หรือกำหนดค่าระบบของ VM เพื่อกำหนดค่าตัว "ปลอม" เอง ตรวจสอบให้แน่ใจว่าคุณไม่สับสนกับที่อยู่ MAC ของก๊อกบนโฮสต์อีกครั้ง
Tom Yan avatar
in flag
ยังไงก็ตาม คุณต้องการเคลียร์คำถามของคุณจริงๆ (โดยลบเรื่องไร้สาระที่ไม่เกี่ยวข้องออกทั้งหมด) หากคุณยังต้องการ/ต้องการความช่วยเหลือเพิ่มเติม
ph flag
@TomYan ฉันได้เขียนคำถามใหม่ทั้งหมดแล้ว หวังว่าตอนนี้จะชัดเจนขึ้นสำหรับคุณ ฉันได้พยายามทำให้แน่ใจว่า MAC addrs นั้นไม่ซ้ำกัน แม้ว่าบางทีฉันอาจจะยังทำไม่ถูกต้องก็ตาม
Tom Yan avatar
in flag
ก่อนอื่น คุณไม่จำเป็นต้องใช้ `-net(dev) bridge` *นอกเหนือจาก* `-net(dev) tap` พวกมันไม่ได้เสริมซึ่งกันและกัน แต่อันแรกจะเพิ่มการแตะให้คุณโดยอัตโนมัติ และอันหลังใช้ประโยชน์จากการแตะที่มีอยู่ ฉันแนะนำให้ใช้ทางลัด `-nic bridge,model=virtio,mac=SO:ME:MA:CA:DD:RE` เพื่อแทนที่ตัวเลือกที่เกี่ยวข้องกับเครือข่ายอื่น ๆ ทั้งหมดที่คุณมีในตอนนี้ (`-nic` สามารถใช้กับ `user` และ `hostfwd btw ได้)
Tom Yan avatar
in flag
ถัดไป `...และจาก de:ad:be:ef:00:12 (NIC ส่วนตัวของเกตเวย์ VM) ซึ่งระบุว่ามีการกำหนดค่าบางอย่างผิดพลาดอย่างมาก` นั่นเป็นสมมติฐานที่ผิด การที่คุณเห็นคำขอ DHCP จาก "โฮสต์เกตเวย์" ขึ้นอยู่กับว่าเรียกใช้ไคลเอ็นต์ DHCP หรือไม่ Arch ISO ใช้ `systemd-networkd` สำหรับสิ่งนั้นและโดยค่าเริ่มต้นจะมีการเปิดใช้งาน DHCP (ไคลเอนต์) บน Ethernet NICs IIRC ทั้งหมด
Tom Yan avatar
in flag
สุดท้าย แม้ว่าฉันไม่คุ้นเคยกับ netboot แต่ทำไมคุณถึงคาดหวังว่ามันจะทำงานเหมือน "นอกกรอบ" ตราบใดที่มีโฮสต์เซิร์ฟเวอร์ dnsmasq / DHCP ในเครือข่าย และไม่ว่าอย่างไร ทำไมคุณไม่เริ่มต้นด้วยการบูท Arch ISO เพื่อยืนยันว่าอย่างน้อยส่วนที่กำหนดที่อยู่ของ DHCP จะทำงานก่อน ดู https://wiki.archlinux.org/title/Netboot btw (โปรดทราบว่าคำแนะนำภายในไม่เกี่ยวข้องกับการจำลองเสมือน ดังนั้นควรใช้ทั้งหมด *ภายใน* VM ไม่ใช่โฮสต์)
Score:0
ธง fr
anx

ขั้นตอนของคุณสำหรับแขก 2 คนไม่เป็นไร ฉันเพิ่งจำลองการตั้งค่าของคุณ จนถึงจุดเช่าที่อยู่ฉันสามารถแจกจ่าย IP จาก VM หนึ่งเครื่องที่เรียกใช้ dnsmasq ไปยัง VM หนึ่งเครื่องที่รันไคลเอ็นต์ dhcp

ตรวจสอบสิ่งเหล่านี้:

  • ไม่สามารถนำอุปกรณ์ประปาที่ไม่ได้เชื่อมต่อขึ้นมาได้
    • มองเห็นได้จาก ลง รัฐใน ไอพีแอล ผลลัพธ์ของโฮสต์ (ควรพูดว่า ไม่ทราบ หรือ ขึ้น)
      • หากคุณปล่อยให้ qemu สร้างอุปกรณ์ประปา ผู้ช่วยสะพาน qemu จะนำมันขึ้นมา
      • หากคุณใช้สคริปต์ = ให้เปิดอุปกรณ์ขึ้นมาที่นั่น
      • มิฉะนั้นคุณต้อง ลิงค์ ip ตั้งค่า tapN ขึ้น บางครั้งหลังจากเริ่ม vm
  • ที่อยู่ MAC ต้องไม่ซ้ำกัน
    • มองเห็นได้ใน อีเธอร์ ที่อยู่ใน ไอพีแอล ในแขก
    • รายการที่เรียนรู้ (ไม่ใช่โฮสต์) macs เช่น brctl โชว์แมค br0 ควรมี สอง รายการที่มีตัวจับเวลาอายุที่ไม่เป็นศูนย์
  • วางแพ็กเก็ตผ่าน iptables
    • ตรวจสอบ /proc/sys/net/bridge/bridge-nf-call* และไม่ว่า br_netfilter โหลดโมดูลแล้ว
    • เพิ่มกฎการบันทึกสำหรับ IPv4 เช่น iptables -A FORWARD -j LOG --log-prefix "ส่งต่อทิ้ง" ก่อนทิ้งหรือก่อนนโยบาย DROP ในตาราง FORWARD
    • ไม่สนใจ /sys/class/net/br*/bridge/nf_call_* (ฉันไม่รู้ว่าทำไมสิ่งเหล่านี้ สามารถ จะปิดเมื่อเปิดการกรอง)

สิ่งที่น่าสังเกตอื่น ๆ ที่ฉันพบขณะทดสอบ:

  • Qemu ได้เพิ่ม vnet_hdr ตัวเลือกบนอุปกรณ์ประปาของฉัน ดูเหมือนว่าสมเหตุสมผลและอาจถูกปิดใช้งานบน qemu cmdline หากต้องการ
  • บางครั้งเส้นทาง (ลิงก์ขอบเขต) ของฉันสำหรับสะพานจะหายไป ฉันยังไม่ได้กำหนดว่าจะเกิดขึ้นได้อย่างไร

เกี่ยวกับความพยายามของคุณในการทำให้การทดสอบง่ายขึ้นโดยการผูกกับอุปกรณ์ประปา..

dnsmasq จะทำงานภายใน QEMU VM

อุปกรณ์แตะถาวร AFAIK ไม่สามารถใช้งานได้จนกว่าจะติดตั้งจริง คุณจึงสามารถทดสอบการตั้งค่าแบบเต็มอย่างมีความหมายเท่านั้น:

  • คุณต้องการเรียกใช้ dnsmasq บนโฮสต์หรือไม่
    • จากนั้นต่อเข้ากับอุปกรณ์บริดจ์
  • หรือคุณต้องการเรียกใช้ dnsmasq ภายใน VM?
    • จากนั้นแนบเข้ากับอินเทอร์เฟซเครือข่ายที่เกี่ยวข้อง ข้างใน VM นั้น

--interface=tap0

คำแนะนำ: ใช้ --bind-อินเตอร์เฟส เพื่อสั่งให้ dnsmasq เปลี่ยนจากการละทิ้งทราฟฟิกจากอินเทอร์เฟซอื่นเป็นการพยายามผูกจริง ๆ ดังนั้นจึงเลิกใช้งานแบบละเอียดเมื่อเริ่มต้นด้วยการตั้งค่าที่ไม่สามารถใช้งานได้

ph flag
คำถามของฉันเกี่ยวกับการเรียกใช้ dnsmasq *ภายใน VM* ตัวอย่าง host-dnsmasq เป็นเพียงเพื่อให้ตัวอย่างปัญหาที่ง่ายขึ้นเท่านั้น หากคุณรู้วิธีการมี dnsmasq *ใน VM* เสนอสัญญาเช่าให้กับ VM net-booting อื่น ฉันจะสนใจที่จะค้นหามาก!
ph flag
เพื่อให้ชัดเจนยิ่งขึ้นฉันได้แก้ไขคำถามของฉันอีกครั้งเพื่อยกตัวอย่าง dnsmasq ในแนวทางของแขกที่ฉันพยายาม
anx avatar
fr flag
anx
ฉัน *คิดว่า* ฉันรู้วิธีทำเพราะทำมาหลายปีแล้ว.. แต่แล้วฉันก็เล่นซอไปรอบ ๆ และพบ *สาม* เหตุผลเล็กน้อยที่แตกต่างกันว่าทำไมมันถึงล้มเหลว
ph flag
ขอบคุณมาก @anx ฉันได้ดำเนินการไปข้างหน้าแล้ว ขอบคุณบันทึกย่อของคุณดูเหมือนว่าการที่ฉันไม่นำอุปกรณ์แตะที่สร้างขึ้นเองในเวลาที่เหมาะสมเป็นสาเหตุของปัญหาของฉัน ถ้าฉันปล่อยให้ QEMU จัดการมัน การบูทเน็ตก็ใช้งานได้จริง ฉันจะอัปเดตคำถามของฉันและอาจเสนอคำอธิบายที่ชัดเจนยิ่งขึ้นเกี่ยวกับความล้มเหลวเมื่อฉันได้เจาะลึกเพิ่มเติมเกี่ยวกับวิธีจัดการกับกรณีการใช้งานของฉันอย่างเหมาะสม ขอบคุณมาก ฉันติดค้างเบียร์คุณหลายขวด!

โพสต์คำตอบ

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