Score:1

Stunnel + Squid = 1 คำขอเป็นเวลา 5 นาที (การเชื่อมต่อที่เหลือรีเซ็ตโดยเพียร์)

ธง us

tl; ดร;

การกำหนดค่าด้วย Stunnel บนไคลเอนต์ที่เชื่อมต่อกับ Squid Proxy ด้วยการตรวจสอบสิทธิ์ใบรับรอง x509 ใช้งานได้เพียงหนึ่งคำขอต่อ 5 นาที สถานการณ์:

  • ปลาหมึก และ ตะลึง กำหนดค่าและเริ่มต้น
  • ว้าว กำหนดค่าเพื่อใช้ โลคัลโฮสต์ เป็นผู้รับมอบฉันทะ (ตะลึง)
  • 1 คำขอเท่านั้น (เช่น wget https://github.com) ต่อ 5 นาที (หรือ ตะลึง เริ่มต้นใหม่) พักงานได้ การเชื่อมต่อถูกรีเซ็ตโดยเพียร์
  • ใช้การเชื่อมต่อดิบเช่น openssl s_client -key -cert -เชื่อมต่อ การใช้การสื่อสารโดยตรงกับปลาหมึกทำงานได้อย่างถูกต้อง

คำอธิบาย

ฉันกำลังตั้งค่าสถาปัตยกรรมของ ตะลึง ติดตั้งบนไคลเอนต์ซึ่งนำไปสู่ ปลาหมึก มอบฉันทะด้วย x509 ใบรับรอง การรับรองความถูกต้อง

การตั้งค่าไคลเอนต์ ตะลึง พร้อมใบรับรองของเขาซึ่งเชื่อมต่อกับ ปลาหมึกจากนั้นตั้งค่า HTTP_PROXY เพื่อมุ่งสู่จุดสิ้นสุดของอุโมงค์ที่ โลคัลโฮสต์.

เส้นทางความน่าเชื่อถือได้รับการกำหนดค่าอย่างถูกต้องในแต่ละด้าน ดังนั้นทั้งใบรับรองความน่าเชื่อถือของ Squid จากไคลเอ็นต์ และใบรับรองของ Squid ของไคลเอ็นต์ที่เชื่อถือในแต่ละระดับ - Root CA และ CA ระดับกลาง

การกำหนดค่าของ stunnel:

sslVersion=TLSv1.2
output=/var/log/stunnel4/stunnel.log
[squid-gcp]
ใบรับรอง = /etc/letsencrypt/live/test.internal/fullchain.pem
คีย์ = /etc/letsencrypt/live/test.internal/privkey.pem
CAFile = /usr/local/share/ca-certificates/root.crt
ลูกค้า = ใช่
แก้ปัญหา=7
ยอมรับ = 127.0.0.1:3128
เชื่อมต่อ = squid.internal:3128

การกำหนดค่าปลาหมึก

acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 เครือข่าย "นี้" (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 เครือข่ายส่วนตัวภายใน (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 พื้นที่ที่อยู่ที่ใช้ร่วมกัน (CGN)
acl localnet src 169.254.0.0/16 # เครื่อง RFC 3927 link-local (เสียบโดยตรง)
acl localnet src 172.16.0.0/12 # RFC 1918 เครือข่ายส่วนตัวภายใน (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 เครือข่ายส่วนตัวในพื้นที่ (LAN)
acl localnet src fc00::/7 # RFC 4193 ช่วงเครือข่ายส่วนตัวในพื้นที่
เครื่อง acl localnet src fe80::/10 # RFC 4291 link-local (เสียบโดยตรง)
acl SSL_ports พอร์ต 443
acl Safe_ports พอร์ต 80 # http
acl Safe_ports พอร์ต 21 # ftp
acl Safe_ports พอร์ต 443 # https
acl Safe_ports พอร์ต 70 # โกเฟอร์
acl Safe_ports พอร์ต 210 # wais
acl Safe_ports พอร์ต 1025-65535 # พอร์ตที่ไม่ได้ลงทะเบียน
acl Safe_ports พอร์ต 280 # http-mgmt
acl Safe_ports พอร์ต 488 # gss-http
acl Safe_ports พอร์ต 591 # filemaker
acl Safe_ports พอร์ต 777 # มัลติลิง http
วิธีเชื่อมต่อ acl CONNECT
acl ใบรับรอง user_cert CN ทดสอบภายใน
http_access อนุญาตให้ผู้จัดการ localhost
http_access ปฏิเสธผู้จัดการ
http_access ปฏิเสธ to_localhost
http_access อนุญาตใบรับรอง
http_access อนุญาต localhost
http_access อนุญาตให้ servicedesk
http_access ปฏิเสธทั้งหมด
https_port 3128 tls-cert=/etc/letsencrypt/live/squid.internal/cert.pem tls-key=/etc/letsencrypt/live/squid.internal/privkey.pem options=NO_SSLv3:NO_TLSv1:NO_TLSv1_1:NO_TLSv1_3:NO_TICKET ไคลเอนต์ =/usr/local/share/ca-certificates/root.crt cafile=/usr/local/share/ca-certificates/root.crt tls-default-ca=off
client_idle_pconn_timeout 5 นาที
เปิด client_persistent_connections
pconn_lifetime 0
logformat squidtls %tl %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt "%ssl::>cert_subject"
access_log daemon:/var/log/squid/access-tls.log Squidtls
แคชปฏิเสธทั้งหมด
cache_dir เป็นโมฆะ /tmp
shutdown_lifetime 1 วินาที
coredump_dir /var/cache/squid

ตอนนี้จะเกิดอะไรขึ้นกับไคลเอนต์ เมื่อกำหนดค่า HTTPS_PROXY=localhost:3128 อย่างถูกต้อง คำขอแรกผ่าน Squid ได้รับการยอมรับ และคำขอถัดไปจะถูกปฏิเสธด้วย การเชื่อมต่อถูกรีเซ็ตโดยเพียร์. หลังจาก 5 นาทีหรือรีสตาร์ท Stunnel คำขอถัดไปจะได้รับการจัดการอย่างถูกต้อง

บันทึกจาก Stunnel เมื่อสิ่งนี้เกิดขึ้น คำขอแรกตกลง รายการที่สองถูกปฏิเสธ:

2021.07.07 14:27:59 LOG7[0]: เริ่มบริการ [squid-gcp] แล้ว
2021.07.07 14:27:59 LOG7[0]: การตั้งค่าตัวเลือกซ็อกเก็ตในเครื่อง (FD=3)
2021.07.07 14:27:59 LOG7[0]: ตัวเลือก TCP_NODELAY ตั้งค่าบนซ็อกเก็ตในเครื่อง
2021.07.07 14:27:59 LOG5[0]: บริการ [squid-gcp] ยอมรับการเชื่อมต่อจาก 127.0.0.1:50142
2021.07.07 14:27:59 LOG6[0]: s_connect: กำลังเชื่อมต่อ 100.112.0.62:3128
2021.07.07 14:27:59 LOG7[0]: s_connect: s_poll_wait 100.112.0.62:3128: รอ 10 วินาที
2021.07.07 14:27:59 LOG7[0]: FD=6 เหตุการณ์=0x2001 เหตุการณ์=0x0
2021.07.07 14:27:59 LOG7[0]: FD=11 เหตุการณ์=0x2005 เหตุการณ์=0x0
2021.07.07 14:27:59 LOG5[0]: s_connect: เชื่อมต่อ 100.112.0.62:3128
2021.07.07 14:27:59 LOG5[0]: บริการ [squid-gcp] เชื่อมต่อเซิร์ฟเวอร์ระยะไกลจาก 100.112.0.63:50392
2021.07.07 14:27:59 LOG7[0]: การตั้งค่าตัวเลือกซ็อกเก็ตระยะไกล (FD=11)
2021.07.07 14:27:59 LOG7[0]: ตัวเลือก TCP_NODELAY ตั้งค่าบนซ็อกเก็ตระยะไกล
2021.07.07 14:27:59 LOG7[0]: ตัวอธิบายระยะไกล (FD=11) เริ่มต้น
2021.07.07 14:27:59 LOG6[0]: SNI: กำลังส่งชื่อเซิร์ฟเวอร์: squid.internal
2021.07.07 14:27:59 LOG6[0]: ไม่จำเป็นต้องใช้ใบรับรองเพียร์
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): ก่อนการเริ่มต้น SSL
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนไคลเอ็นต์ สวัสดี
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนไคลเอ็นต์ สวัสดี
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): เซิร์ฟเวอร์อ่าน SSLv3/TLS สวัสดี
2021.07.07 14:27:59 LOG6[0]: การตรวจสอบใบรับรองถูกปิดใช้งาน
2021.07.07 14:27:59 LOG6[0]: การตรวจสอบใบรับรองถูกปิดใช้งาน
2021.07.07 14:27:59 LOG6[0]: การตรวจสอบใบรับรองถูกปิดใช้งาน
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS อ่านใบรับรองเซิร์ฟเวอร์
2021.07.07 14:27:59 LOG6[0]: Client CA: O=GCP Internal CA, CN=GCP Internal CA Root CA
2021.07.07 14:27:59 LOG6[0]: Client CA: O=GCP Internal CA, CN=GCP Internal CA CA ระดับกลาง
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS อ่านคำขอใบรับรองเซิร์ฟเวอร์
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): เซิร์ฟเวอร์อ่าน SSLv3/TLS เสร็จแล้ว
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนใบรับรองไคลเอ็นต์
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนการแลกเปลี่ยนคีย์ไคลเอ็นต์
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): ตรวจสอบใบรับรองการเขียน SSLv3/TLS
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนเปลี่ยนข้อมูลจำเพาะการเข้ารหัส
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): เขียน SSLv3/TLS เสร็จแล้ว
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): เขียน SSLv3/TLS เสร็จแล้ว
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS อ่านข้อมูลจำเพาะการเข้ารหัสการเปลี่ยนแปลง
2021.07.07 14:27:59 LOG7[0]: สถานะ TLS (เชื่อมต่อ): อ่าน SSLv3/TLS เสร็จแล้ว
2021.07.07 14:27:59 LOG7[0]: การโทรกลับเซสชันใหม่
2021.07.07 14:27:59 LOG7[0]: ใบรับรองเพียร์ถูกแคช (2601 ไบต์)
2021.07.07 14:27:59 LOG6[0]: รหัสเซสชัน: 383CDD4E8AA87AC2ED148172C025D1A5ECE0A1FF114362503BCDED36B9BB44B0
2021.07.07 14:27:59 LOG7[0]: 1 ไคลเอ็นต์ที่ร้องขอการเชื่อมต่อ
2021.07.07 14:27:59 LOG7[0]: 1 ไคลเอ็นต์เชื่อมต่อสำเร็จ
2021.07.07 14:27:59 LOG7[0]: 0 ไคลเอ็นต์ร้องขอการเจรจาใหม่
2021.07.07 14:27:59 LOG7[0]: ใช้ซ้ำ 0 เซสชัน
2021.07.07 14:27:59 LOG6[0]: เชื่อมต่อ TLS: เซสชันใหม่มีการเจรจา
2021.07.07 14:27:59 LOG6[0]: TLSv1.2 ciphersuite: AES256-GCM-SHA384 (การเข้ารหัส 256 บิต)
2021.07.07 14:27:59 LOG7[0]: การบีบอัด: null, การขยาย: null
2021.07.07 14:27:59 LOG6[0]: อ่านซ็อกเก็ตปิด (readsocket)
2021.07.07 14:27:59 LOG7[0]: กำลังส่งการแจ้งเตือน close_notify
2021.07.07 14:27:59 LOG7[0]: การแจ้งเตือน TLS (เขียน): คำเตือน: ปิดการแจ้งเตือน
2021.07.07 14:27:59 LOG6[0]: SSL_shutdown ส่งการแจ้งเตือน close_notify เรียบร้อยแล้ว
2021.07.07 14:27:59 LOG7[0]: การแจ้งเตือน TLS (อ่าน): คำเตือน: ปิดการแจ้งเตือน
2021.07.07 14:27:59 LOG6[0]: ปิด TLS (SSL_read)
2021.07.07 14:27:59 LOG7[0]: ปิดการเขียนซ็อกเก็ตที่ส่ง
2021.07.07 14:27:59 LOG5[0]: การเชื่อมต่อปิด: 737 ไบต์ที่ส่งไปยัง TLS, 234207 ไบต์ที่ส่งไปยังซ็อกเก็ต
2021.07.07 14:27:59 LOG7[0]: ตัวอธิบายระยะไกล (FD=11) ปิด
2021.07.07 14:27:59 LOG7[0]: ตัวอธิบายท้องถิ่น (FD=3) ปิด
2021.07.07 14:27:59 LOG7[0]: บริการ [squid-gcp] เสร็จสิ้น (เหลือ 0)
2021.07.07 14:28:01 LOG7[1]: เริ่มบริการ [squid-gcp] แล้ว
2021.07.07 14:28:01 LOG7[1]: การตั้งค่าตัวเลือกซ็อกเก็ตในเครื่อง (FD=3)
2021.07.07 14:28:01 LOG7[1]: ตัวเลือก TCP_NODELAY ตั้งค่าบนซ็อกเก็ตในเครื่อง
2021.07.07 14:28:01 LOG5[1]: บริการ [squid-gcp] ยอมรับการเชื่อมต่อจาก 127.0.0.1:50146
2021.07.07 14:28:01 LOG6[1]: s_connect: กำลังเชื่อมต่อ 100.112.0.62:3128
2021.07.07 14:28:01 LOG7[1]: s_connect: s_poll_wait 100.112.0.62:3128: รอ 10 วินาที
2021.07.07 14:28:01 LOG7[1]: FD=6 เหตุการณ์=0x2001 เหตุการณ์=0x0
2021.07.07 14:28:01 LOG7[1]: FD=11 เหตุการณ์=0x2005 เหตุการณ์=0x0
2021.07.07 14:28:01 LOG5[1]: s_connect: เชื่อมต่อแล้ว 100.112.0.62:3128
2021.07.07 14:28:01 LOG5[1]: บริการ [squid-gcp] เชื่อมต่อเซิร์ฟเวอร์ระยะไกลจาก 100.112.0.63:50396
2021.07.07 14:28:01 LOG7[1]: การตั้งค่าตัวเลือกซ็อกเก็ตระยะไกล (FD=11)
2021.07.07 14:28:01 LOG7[1]: ตัวเลือก TCP_NODELAY ตั้งค่าบนซ็อกเก็ตระยะไกล
2021.07.07 14:28:01 LOG7[1]: ตัวอธิบายระยะไกล (FD=11) เริ่มต้น
2021.07.07 14:28:01 LOG6[1]: SNI: กำลังส่งชื่อเซิร์ฟเวอร์: squid.internal
2021.07.07 14:28:01 LOG6[1]: ไม่จำเป็นต้องใช้ใบรับรองเพียร์
2021.07.07 14:28:01 LOG7[1]: สถานะ TLS (เชื่อมต่อ): ก่อนการเริ่มต้น SSL
2021.07.07 14:28:01 LOG7[1]: สถานะ TLS (เชื่อมต่อ): SSLv3/TLS เขียนไคลเอ็นต์ สวัสดี
2021.07.07 14:28:01 LOG3[1]: SSL_connect: Peer ตัดการเชื่อมต่อกะทันหัน
2021.07.07 14:28:01 LOG5[1]: รีเซ็ตการเชื่อมต่อ: 0 ไบต์ที่ส่งไปยัง TLS, 0 ไบต์ที่ส่งไปยังซ็อกเก็ต
2021.07.07 14:28:01 LOG7[1]: ตัวอธิบายระยะไกล (FD=11) ปิด
2021.07.07 14:28:01 LOG7[1]: ตัวอธิบายโลคัล (FD=3) ปิด
2021.07.07 14:28:01 LOG7[1]: บริการ [squid-gcp] เสร็จสิ้น (เหลือ 0)

ดูเหมือนว่าการเจรจา TLS คำขอแรกจะสำเร็จในขณะที่คำขอที่สองยังไม่ได้เริ่มต้นด้วยซ้ำ

บันทึกจากบันทึกการเข้าถึงปลาหมึก:

07/Jul/2021:14:27:59 +0000 1625668079.646 496 100.112.0.63 TCP_TUNNEL/200 234207 CONNECT github.com:443 - HIER_DIRECT/140.82.121.4 - "/CN=test.internal"
07/Jul/2021:14:28:01 +0000 1625668081.958 0 100.112.0.63 ไม่มี/000 0 ไม่มี ข้อผิดพลาด:ธุรกรรมสิ้นสุดก่อนส่วนหัว - HIER_NONE/- - "-"

บันทึกจากแคช:

2021/07/07 14:28:01 เด็ก1| เกิดข้อผิดพลาดในการเจรจาการเชื่อมต่อ SSL บน FD 11: error:00000001:lib(0):func(0):reason(1) (1/-1)

โบนัส

เมื่อฉันลองใช้ openssl s_client แล้ว รับ https://github.com แบบนี้:

openssl s_client -cert /etc/letsencrypt/live/test.internal/cert.pem -key /etc/letsencrypt/live/test.internal/privkey.pem -connect squid.internal:3128

แต่ละคำขอสำเร็จ:

บันทึกจากปลาหมึก:

07/Jul/2021:14:33:24 +0000 1625668404.188 369 100.112.0.63 TCP_MISS/200 227308 GET https://github.com/ - HIER_DIRECT/140.82.121.4 text/html "/CN=test.internal"
07/Jul/2021:14:33:50 +0000 1625668430.041 25 100.112.0.63 TCP_MISS/200 227578 GET https://github.com/ - HIER_DIRECT/140.82.121.4 text/html "/CN=test.internal"
07/Jul/2021:14:33:55 +0000 1625668435.218 39 100.112.0.63 TCP_MISS/200 227580 GET https://github.com/ - HIER_DIRECT/140.82.121.4 text/html "/CN=test.internal"

ฉันสูญเสียความคิดของฉันกับปัญหานี้ ฉันขอขอบคุณสำหรับความช่วยเหลือเกี่ยวกับเรื่องนี้

Tom Yan avatar
in flag
คุณกำลังสร้าง stunnel `connect = ` ไปยัง address:port ของอินสแตนซ์ Squid หรือไม่ IIRC นั่นไม่ใช่วิธีการใช้ Stunnel แต่คุณจะต้องมี stunnel ที่ทำงานในโหมดเซิร์ฟเวอร์ (เช่น ไม่มี `client = yes`) บนรีโมตโฮสต์บนพอร์ตอื่น ซึ่งเป็นสิ่งที่ `connect=` เชื่อมต่อกับ stunnel จากนั้นสิ่งที่ไปที่ `accept = ` ที่ฝั่งโลคัลจะถูกดักจับและส่งต่อโดย stunnel ไปยังฝั่งรีโมต
Tom Yan avatar
in flag
โปรดทราบว่าอาจใช้ Squid เป็นเซิร์ฟเวอร์สำหรับ Stunnel ได้ แต่อาจไม่เหมาะกับกรณีการใช้งานของคุณ อีกอย่าง คุณควรใช้ `http_port` แทน `https_port` สำหรับวิธีที่กล่าวถึงข้างต้น (ถ้าคุณไม่ต้องการให้ `wget` ใช้ https proxy...double encryption ฉันไม่แน่ใจว่า `wget` รองรับ https proxy อย่างที่ `curl` ทำจริงหรือไม่ ดูเหมือนว่า `https_proxy` เป็นเพียงนามแฝงของ `http_proxy`; หรือในความหมายของ "http พร็อกซีสำหรับการเชื่อมต่อ https ของคุณ"...)
us flag
เฮ้ @TomYan ขอบคุณสำหรับเวลาแสดงความคิดเห็นเหล่านั้น! ฉันต้องการสร้างการรับรองความถูกต้องตามใบรับรองให้กับอินสแตนซ์ `squid` ถ้าฉันสร้างอินสแตนซ์เซิร์ฟเวอร์ 'stunnel' บน Squid แล้ว 'เชื่อมต่อ' กับ 'squid' บนโลคัลโฮสต์ ฉันจะมีทั้งใบรับรองต้นทางและ IP ที่ตรงกับโลคัลโฮสต์ (ฉันต้องการให้เป็นไคลเอ็นต์ทั้ง IP และใบรับรองปรากฏในบันทึก) นั่นคือเหตุผล ฉันใช้ `https_port` เช่นกัน ปัญหาที่นี่คือคำขอแรกที่ฉันทำบนเครื่องไคลเอนต์นั้นถูกต้อง ในขณะที่คำขออื่นถูกรีเซ็ตหลังจาก 'ไคลเอ็นต์สวัสดี' โดย Squid ฉันเชื่อว่ามีบางอย่างผิดปกติกับ Squid หรือ Stunnel Conf แต่ฉันหาไม่พบ ;(
Score:0
ธง my

คำขอที่ประสบความสำเร็จนั้นสำเร็จจริง ๆ หรือหยุดทำงาน (อาจเป็นเพราะเหตุผลอื่น ๆ ที่ไม่เกี่ยวข้อง)

สิ่งที่น่าสนใจในการกำหนดค่า Squid ของคุณคือ:

client_idle_pconn_timeout 5 นาที
เปิด client_persistent_connections
pconn_lifetime 0

กล่าวอีกนัยหนึ่ง เมื่อไคลเอนต์เชื่อมต่อกับพร็อกซี การเชื่อมต่อถาวรจะถูกสร้างขึ้นและจะปิดหลังจากไม่ได้ใช้งาน 5 นาที

วิธีแก้ปัญหาที่เป็นไปได้:

  • ปิดการใช้งาน client_persistent_connections. โดยพื้นฐานแล้วหมายถึงการจับมือ TCP ใหม่ทุกครั้งจะถือว่าใหม่ทั้งหมด ซึ่งอาจส่งผลกระทบต่อประสิทธิภาพโดยรวม แต่ควรแก้ปัญหาของคุณ

  • เพิ่มจำนวนการเชื่อมต่อพร้อมกันอย่างชัดเจนจาก IP ต้นทางเดียวกันที่สามารถรองรับได้ คุณสามารถทำได้โดยตั้งค่า ACL ด้วย ลิมิตยูสเซอร์คอน แม็กซ์คอน 5 (หรือเบอร์อื่น).

  • การเพิ่มการหมดเวลาใช้งานไปยังสิ่งที่ใหญ่กว่ามาก สิ่งนี้ยังส่งผลกระทบต่อประสิทธิภาพการทำงานด้วย (ทำให้การเชื่อมต่อใช้งานได้นาน ซึ่งอาจทำให้ทรัพยากรของคุณหมดได้)

หวังว่าจะช่วยได้

โพสต์คำตอบ

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