Điểm:2

Chuỗi các máy chủ WireGuard: Có thể ping cả từ máy khách nhưng không thể truy cập internet. Vấn đề định tuyến IP?

lá cờ cn

Tôi đang thử thiết lập VPN theo chuỗi/kép trong đó tất cả lưu lượng truy cập của máy khách đi qua 2 máy chủ trước khi truy cập internet:

Máy khách â Máy chủ1 â Máy chủ2 â Internet công cộng

Tất cả các đồng nghiệp đều ở trên các khối địa chỉ riêng này: 10.103.213.0/24 (IPv4) và fd6f:9403:2887:9cd6:10:103:213:0/112 (IPv6). Dưới đây là cấu hình của các đồng nghiệp và quy tắc IPTables tại chỗ. (Cũng xin lưu ý tên của các tệp cấu hình, trong trường hợp có vấn đề.)


Cấu hình máy chủ2

Tập tin: /etc/wireguard/wg0.conf

# Máy chủ2

[Giao diện]
Khóa riêng tư = SERVER2_PRIVATE_KEY
Địa chỉ = 10.103.213.2/24, fd6f:9403:2887:9cd6:10:103:213:2/112
Cổng nghe = 53701
SaveConfig = sai

# KHÁCH HÀNG

[Ngang hàng] # Server1
Khóa công khai = SERVER1_PUBLIC_KEY
PresharedKey = SERVER1_PRESHARED_KEY
# â để cho phép lưu lượng truy cập từ máy khách (10.103.213.11/32) qua Máy chủ1 (10.103.213.1/32), cho phép cả hai
IP được phép = 10.103.213.0/24, fd6f:9403:2887:9cd6:10:103:213:0/112

Cấu hình tường lửa. lệnh:

ufw cho phép nhận xét 53701/udp 'WireGuard VPN'

iptables -A FORWARD -i wg0 -j CHẤP NHẬN &&
iptables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN &&
ip6tables -A FORWARD -i wg0 -j CHẤP NHẬN &&
ip6tables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN

iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j ​​MASQUERADE
ip6tables -t nat -A POSTROUTING -s fd6f:9403:2887:9cd6:10:103:213:0/112 -o enp8s0 -j ​​MASQUERADE

Cấu hình máy chủ1

Tập tin: /etc/wireguard/wg0.conf

# Máy chủ 1

[Giao diện]
Khóa riêng tư = SERVER1_PRIVATE_KEY
Địa chỉ = 10.103.213.1/24, fd6f:9403:2887:9cd6:10:103:213:1/112
Cổng nghe = 53701
SaveConfig = sai

# KHÁCH HÀNG

[Ngang hàng] # Server2
Khóa công khai = SERVER2_PUBLIC_KEY
PresharedKey = SERVER1_PRESHARED_KEY
Điểm cuối = SERVER2_PUBLIC_IP:53701
IP được phép = 10.103.213.2/32, fd6f:9403:2887:9cd6:10:103:213:2/128
#PersistentKeepalive = 25

[Đồng đẳng] # PC
Khóa công khai = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP được phép = 10.103.213.11/32, fd6f:9403:2887:9cd6:10:103:213:11/128

Cấu hình tường lửa. lệnh:

ufw cho phép nhận xét 53701/udp 'WireGuard VPN'

iptables -A FORWARD -i wg0 -j CHẤP NHẬN &&
iptables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN &&
ip6tables -A FORWARD -i wg0 -j CHẤP NHẬN &&
ip6tables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN

Cấu hình máy khách

# KHÁCH HÀNG: Máy tính

[Giao diện]
Khóa riêng tư = CLIENT_PRIVATE_KEY
Địa chỉ = 10.103.213.11/24, fd6f:9403:2887:9cd6:10:103:213:11/112
DNS = 10.103.213.1, fd6f:9403:2887:9cd6:10:103:213:1

[Ngang hàng] # Server1
Khóa công khai = SERVER1_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Điểm cuối = SERVER1_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0, ::0/0
#PersistentKeepalive = 25

Bây giờ, như tôi đã nói, tôi có thể ping Server1 (10.103.213.2) và Máy chủ2 (10.103.213.1) từ Khách hàng (10.103.213.11) trên mạng riêng (WireGuard) khi VPN được bật trên tất cả các thiết bị ngang hàng, nhưng tôi không thể truy cập internet.

Tôi biết mình đang thiếu một số định tuyến IP hoặc quy tắc IPTables rất cần thiết, nhưng mặc dù đã cố gắng tìm một giải pháp mà tôi có thể hiểu trong nhiều ngày, tôi đã không thành công. Tôi thấy rằng có rất ít hy vọng cho tôi nếu không thực sự đọc một cuốn sách về mạng/tường lửa Linux.

Hiện tại, tôi hy vọng ai đó có thể giúp tôi giải pháp cùng với lời giải thích về những gì chúng tôi đang làm và tại sao, để tôi có thể hiểu rõ hơn và ghi chép.

Cám ơn rất nhiều!


GHI CHÚ:

  • Nếu tôi thiếu bất kỳ thông tin hữu ích nào, vui lòng hỏi và tôi sẽ rất vui khi nhận được thông tin đó.

  • Máy khách chạy macOS. Server1 và Server2 chạy Debian 11 "Bullseye". Chỉ là một FYI, trong trường hợp nó có liên quan.

  • Server1 và Server2 đã cài đặt và thiết lập Unbound cho phân giải DNS cục bộ. Đó là lý do tại sao bạn thấy DNS = 10.103.213.1, fd6f:9403:2887:9cd6:10:103:213:1 trong Cấu hình máy khách. Nếu không phải vì điều đó, tôi sẽ sử dụng IP của CloudFlare hoặc Google ở ​​đó.

  • Ai đó trên #wireguard IRC đã gợi ý rằng tôi nên thử thêm Bảng = 123 Dưới [Giao diện] trong cấu hình WireGuard của Server1. và sau đó chạy lệnh quy tắc ip thêm iif wg0 bảng 123. Điều đó không hiệu quả và tôi cũng không thể hiểu nó phải làm gì (tôi không thể hiểu được các trang hướng dẫn hoặc các chi tiết kỹ thuật).

  • Từ việc đọc của tôi, tôi đã đi đến kết luận rằng iptablesuww có thể được sử dụng cùng nhau—ngoại trừ người ta phải cẩn thận khi sử dụng iptables-kiên trì. Bạn cần phải chạy netfilter-liên tục lưu ngay cả sau khi chạy uww các lệnh để các quy tắc tường lửa được duy trì trong các lần khởi động lại thậm chí nếu trạng thái ufw nói rằng họ đang ở tại chỗ. Nếu vì lý do nào đó bạn khởi động lại trước khi lưu, hãy xóa các quy tắc UFW và thêm lại rồi chạy netfilter-liên tục lưu.

iBug avatar
lá cờ um
Trộn UFW và iptables không phải là một ý tưởng hay đối với tôi.
lá cờ cn
@iBug IDK, tôi đã đọc về nó và gần như đi đến kết luận rằng chúng có thể được sử dụng cùng nhau—ngoại trừ việc bạn phải cẩn thận khi sử dụng `iptables-persistent` (`netfilter-persistent save` ngay cả sau khi chạy `ufw ` lệnh). Không có vấn đề nào khác.
Điểm:1
lá cờ cn

Những người tốt bụng ở trên #bảo vệ dây Kênh IRC trên Libera.Chat đã giúp tôi ra ngoài!

Các vấn đề với cấu hình của tôi. Như sau:

  • Cấu hình của Server1 có Server2 với IP được phép chỉ các địa chỉ IP của Server2. Điều đó sẽ không cho phép "Internet". Nó cần phải 0.0.0.0/0, ::0/0.

  • Giao diện WireGuard của Server1 phải được định cấu hình để thêm các tuyến (đối với tất cả các mục trong IP được phép) vào bảng định tuyến IP tùy chỉnh (hãy gọi nó là bảo vệ dây2x) thay cho chủ yếu cái bàn. Sau đó, thêm quy tắc chính sách IP cho biết lưu lượng truy cập đó với giao diện đầu vào (iif) wg0 chuyển đến bảng tùy chỉnh—điều này cũng có nghĩa là các loại lưu lượng truy cập khác sẽ sử dụng tuyến đường mặc định theo thông lệ.


Cấu hình đã sửa

Cấu hình máy chủ2

Tập tin: /etc/wireguard/wg0.conf

# Máy chủ2

[Giao diện]
Khóa riêng tư = SERVER2_PRIVATE_KEY
Địa chỉ = 10.103.213.2/24, fd6f:9403:2887:9cd6:10:103:213:2/112
Cổng nghe = 53701
SaveConfig = sai

# KHÁCH HÀNG

[Ngang hàng] # Server1
Khóa công khai = SERVER1_PUBLIC_KEY
PresharedKey = SERVER1_PRESHARED_KEY
# â để cho phép lưu lượng truy cập từ máy khách (10.103.213.11/32) qua Máy chủ1 (10.103.213.1/32), cho phép cả hai
IP được phép = 10.103.213.0/24, fd6f:9403:2887:9cd6:10:103:213:0/112

Cấu hình tường lửa. lệnh:

ufw cho phép nhận xét 53701/udp 'WireGuard VPN'

iptables -A FORWARD -i wg0 -j CHẤP NHẬN &&
iptables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN &&
ip6tables -A FORWARD -i wg0 -j CHẤP NHẬN &&
ip6tables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN

iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp7s0 -j ​​MASQUERADE
ip6tables -t nat -A POSTROUTING -s fd6f:9403:2887:9cd6:10:103:213:0/112 -o enp7s0 -j ​​MASQUERADE

Cấu hình máy chủ1

Tập tin: /etc/wireguard/wg0.conf

# Máy chủ 1

[Giao diện]
Khóa riêng tư = SERVER1_PRIVATE_KEY
Địa chỉ = 10.103.213.1/32, fd6f:9403:2887:9cd6:10:103:213:1/128
Cổng nghe = 53701
Bảng = wireguard2x
# â chỉ nên được đặt nếu độ phân giải hoặc openresolv được cài đặt trên hệ thống, nếu không hãy để hệ thống sử dụng giá trị mặc định
# â không cần thiết nếu độ phân giải DNS cục bộ được thiết lập
#DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001
DNS = 10.103.213.1, fd6f:9403:2887:9cd6:10:103:213:1
SaveConfig = sai

# KHÁCH HÀNG

[Ngang hàng] # Server2
Khóa công khai = SERVER2_PUBLIC_KEY
PresharedKey = SERVER1_PRESHARED_KEY
Điểm cuối = SERVER2_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0, ::0/0
#PersistentKeepalive = 25

[Đồng đẳng] # PC
Khóa công khai = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP được phép = 10.103.213.11/32, fd6f:9403:2887:9cd6:10:103:213:11/128

Cấu hình tường lửa. lệnh:

ufw cho phép nhận xét 53701/udp 'WireGuard VPN'

iptables -A FORWARD -i wg0 -j CHẤP NHẬN &&
iptables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN &&
ip6tables -A FORWARD -i wg0 -j CHẤP NHẬN &&
ip6tables -A CHUYỂN ĐI -o wg0 -j CHẤP NHẬN

echo 123 wireguard2x >> /etc/iproute2/rt_tables
quy tắc ip thêm bảng iif wg0 wireguard2x

Cấu hình máy khách

# KHÁCH HÀNG: Máy tính

[Giao diện]
Khóa riêng tư = CLIENT_PRIVATE_KEY
Địa chỉ = 10.103.213.11/32, fd6f:9403:2887:9cd6:10:103:213:11/128
DNS = 10.103.213.1, fd6f:9403:2887:9cd6:10:103:213:1

[Ngang hàng] # Server1
Khóa công khai = SERVER1_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Điểm cuối = SERVER1_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0, ::0/0
#PersistentKeepalive = 25

GHI CHÚ:

  • Bạn có thể xem tất cả các quy tắc định tuyến chính sách hiện đang có hiệu lực bằng cách sử dụng lệnh này: danh sách quy tắc ip hoặc quy tắc ip

  • Xem các bảng định tuyến với, ví dụ: lộ trình ip bảng wireguard2x hoặc bảng danh sách lộ trình ip wireguard2x.

  • Để xóa bộ đệm tuyến đường: ip xóa bộ nhớ cache

  • Đọc thêm: Kiểm soát lưu lượng và định tuyến nâng cao Linux (LARTC) HOWTO

  • Bạn có thể giám sát luồng lưu lượng truy cập mạng của Máy khách—nếu trên Linux, bằng cách sử dụng sudo iptraf-ng; trên macOS bằng cách sử dụng sudo iftop. (Được chạy trên máy khách.)

    • Tôi thấy việc chạy khó phân tích cú pháp do có quá nhiều thay đổi trực tiếp. Vì vậy, tôi đã được đề nghị cố gắng tuyến đường nhận 192.0.2.0 (hiển thị giao diện đang được sử dụng, ví dụ: giao diện: utun2) rồi chạy ifconfig <giao diện> (ví dụ., ifconfig utun2) trên macOS. Cái sau sẽ hiển thị địa chỉ IP riêng (ngang hàng WireGuard) của Máy khách, ví dụ: 10.103.213.11, xác nhận rằng lưu lượng đang được định tuyến qua giao diện WG. Nó không nhiều, nhưng đó là một sự khởi đầu.

    • CẬP NHẬT: đường theo dõi là tuyệt vời cho điều này! Ví dụ: theo dõi tuyến đường 8.8.8.8. (Cúi đầu cho Chrispus Kamau.)

  • cuộn tròn ipinfo.io để kiểm tra địa chỉ IP của bạn khi đã bật VPN. (Được chạy trên máy khách.)

CÓ LIÊN QUAN:

Điểm:0
lá cờ cn

(Dựa trên tác phẩm xuất sắc của Chrispus Kamau VPN bảo vệ dây hướng dẫn cho Thiết lập điển hìnhThiết lập chuỗi, có vẻ như tôi có thể có một giải pháp (chưa được kiểm tra!) ở định dạng cho biết cách xử lý các thiết lập hơi bất thường/phức tạp—hoặc ít nhất là cung cấp cho bạn một ý tưởng. Cảm ơn CK rất nhiều!)

Qua: https://github.com/iamckn/chained-wireguard-ansible


Làm thế nào nó hoạt động:

  • Khách hàng (vpn0) â 10.200.200.0/24 (wg0) â Người trung gian (cổng0) â 10.100.100.0/24 (wg0) Cánh cổng (wg0) â Internet công cộng

  • Giả sử rằng Unbound được thiết lập trên cả Middleman và Gate để phân giải DNS cục bộ.

Cấu hình cổng

Định cấu hình giao diện VPN của cổng (wg0).

Tập tin: /etc/wireguard/wg0.conf

# NGƯỜI PHỤC VỤ

[Giao diện] # Cổng
Khóa riêng tư = GATE_PRIVATE_KEY
Địa chỉ = 10.100.100.1/24
Cổng nghe = 53701
SaveConfig = sai

# KHÁCH HÀNG

[Đồng đẳng] # Trung gian
Khóa công khai = MIDDLEMAN_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
IP được phép = 10.0.0.0/8

Cấu hình tường lửa. lệnh:

# Theo dõi kết nối VPN
## Theo dõi chuỗi đầu vào
iptables -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
## Theo dõi chuỗi chuyển tiếp
iptables -A FORWARD -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN

# Cho phép các kết nối WireGuard/lưu lượng truy cập VPN đến trên cổng nghe
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate MỚI -j CHẤP NHẬN

# Cho phép cả lưu lượng DNS đệ quy TCP và UDP
iptables -A INPUT -s 10.100.100.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A INPUT -s 10.100.100.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN

# Cho phép chuyển tiếp các gói nằm trong đường hầm VPN
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate MỚI -j CHẤP NHẬN

# Thiết lập NAT
iptables -t nat -A POSTROUTING -s 10.100.100.0/24 -o enp7s0 -j ​​MASQUERADE

Mở giao diện VPN của cổng và cho phép dịch vụ WireGuard tự động khởi động lại khi khởi động:

wg-nhanh lên wg0
kích hoạt systemctl wg-quick@wg0

Cấu hình người trung gian

Định cấu hình giao diện đối mặt với cổng của người trung gian (cổng0). Ở đây người trung gian đóng vai trò là khách hàng.

Tập tin: /etc/wireguard/gate0.conf

[Giao diện] # Người trung gian
Khóa riêng tư = MIDDLEMAN_PRIVATE_KEY
Địa chỉ = 10.100.100.2/32
DNS = 10.100.100.1
SaveConfig = sai

# ĐỒNG NGHIỆP

[Ngang hàng] # Cổng
Khóa công khai = GATE_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
Điểm cuối = GATE_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0
#PersistentKeepalive = 21

Định cấu hình giao diện hướng tới khách hàng của người trung gian (wg0). Ở đây người trung gian đóng vai trò là người phục vụ.

Tập tin: /etc/wireguard/wg0.conf

# NGƯỜI PHỤC VỤ

[Giao diện] # Người trung gian
Khóa riêng tư = MIDDLEMAN_PRIVATE_KEY
Địa chỉ = 10.200.200.1/24
Cổng nghe = 53701
SaveConfig = sai

# KHÁCH HÀNG

[Đồng đẳng] # PC
Khóa công khai = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP được phép = 10.200.200.2/32

Cấu hình tường lửa. lệnh:

iptables -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
iptables -A FORWARD -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN

iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate MỚI -j CHẤP NHẬN

iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN

iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate MỚI -j CHẤP NHẬN

iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o enp41s0 -j ​​MASQUERADE

# Thiết lập chuỗi VPN NAT
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -j SNAT --to-source 10.100.100.2

Định cấu hình định tuyến chính sách trên người trung gian để định tuyến lưu lượng truy cập từ máy khách đến cổng.

tiếng vang "1 người trung gian" >> /etc/iproute2/rt_tables

# Chuyển tiếp tất cả lưu lượng đến cổng
tuyến đường ip thêm 0.0.0.0/0 bảng dev gate0 người trung gian

# HOẶC chỉ chuyển tiếp lưu lượng tới 4.2.2.2 (ví dụ:), tới cổng
#ip route thêm người trung gian bảng 4.2.2.2/32 dev gate0

thêm quy tắc ip từ người trung gian tra cứu 10.200.200.0/24

Hiển thị giao diện WireGuard của người trung gian và cho phép dịch vụ WireGuard tự động khởi động lại khi khởi động:

wg-lên cổng nhanh0
kích hoạt systemctl wg-quick@gate0

wg-nhanh lên wg0
kích hoạt systemctl wg-quick@wg0

Cấu hình máy khách

Tập tin: /etc/wireguard/vpn0.conf

[Giao diện]
Khóa riêng tư = CLIENT_PRIVATE_KEY
Địa chỉ = 10.200.200.2/32
DNS = 10.200.200.1

# ĐỒNG NGHIỆP

[Đồng đẳng] # Trung gian
Khóa công khai = MIDDLEMAN_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Điểm cuối = MIDDLEMAN_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0
#PersistentKeepalive = 21

Cuối cùng kích hoạt WireGuard trên máy khách.

Điểm:0
lá cờ us

câu trả lời của nó_me đang làm việc rất tốt cho tôi. Dưới đây là một số thay đổi tôi đã thực hiện để tự động hóa việc tạo/xóa bảng định tuyến, iptables và quy tắc ip. Quá trình tự động hóa diễn ra khi giao diện bảo vệ dây được đưa lên và hạ xuống. Xin lưu ý rằng tôi không sử dụng ipv6 hoặc ufw trong cấu hình này:

Máy chủ 1:

# Thêm bảng lộ trình cho giao diện này
PreUp = echo 1 wireguard2x >> /etc/iproute2/rt_tables
# Thêm quy tắc ip để trỏ giao diện này vào bảng định tuyến mới
PreUp = quy tắc ip thêm iif %i bảng wireguard2x
# Cài đặt iptables
PostUp = iptables -A FORWARD -i %i -j CHẤP NHẬN
PostUp = iptables -A FORWARD -o %i -j CHẤP NHẬN

# Xóa iptables
PostDown = iptables -D FORWARD -i %i -j CHẤP NHẬN
PostDown = iptables -D FORWARD -o %i -j CHẤP NHẬN
# Tìm và xóa quy tắc ip
PostDown = quy tắc ip | grep "từ tất cả iif %i" | cắt -d: -f1 | xargs -L1 quy tắc ip trước
# Xóa bảng ip
PostDown = sed -i '/wireguard2x/d' /etc/iproute2/rt_tables

Máy chủ2:

PostUp = iptables -A FORWARD -i %i -j CHẤP NHẬN
PostUp = iptables -A FORWARD -o %i -j CHẤP NHẬN
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j CHẤP NHẬN
PostDown = iptables -D FORWARD -o %i -j CHẤP NHẬN
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
lá cờ cn
Đúng, tôi biết `PostUp` và `PostDown` trong WG config. Tôi chỉ thích tất cả các quy tắc tường lửa của mình (bao gồm cả quy tắc hệ thống và ứng dụng khác) ở một nơi và do đó muốn thêm chúng theo cách thủ công.
Aman Juman avatar
lá cờ ng
@máy tính1 Tôi đã thử cấu hình của bạn và nó có thể kết nối với Server-II nhưng cuối cùng lại mất quyền truy cập SSH vào Server-I. Ngoài ra, tôi không thể kết nối với Máy chủ-I bằng bất kỳ ứng dụng khách WireGuard nào.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.