ฉันพบปัญหาที่ ssh ไปยังเซิร์ฟเวอร์ระยะไกลหยุดทำงานพร้อมกับข้อความ ส่ง SSH2_MSG_KEXINIT แล้ว
. ฉันได้สำรวจตัวเลือก MTU แล้วโดยไม่มีโชค
กรณีที่ 1 (ล้มเหลว)
สิ่งนี้เกิดขึ้นเมื่อฉัน ssh จากพีซี Linux ผ่านเราเตอร์ openWRT ที่รันไคลเอนต์ openVPN ฉันตั้งค่าเราเตอร์ให้ส่งต่อจาก LAN 44.20.11.0/24
ไปที่ VPN จูน0
. ฉันสามารถ ping เซิร์ฟเวอร์ ssh ระยะไกลจากพีซีของฉันได้สำเร็จ ดังนั้นฉันไม่คิดว่าการส่งต่อเป็นปัญหา
เวอร์ชันไคลเอนต์พีซี openVPN นี้คือ 2.5.2 mips-openwrt-linux-gnu
. เวอร์ชัน openWRT openVPN ฝั่งเซิร์ฟเวอร์คือ openvpn-2.3.8-16.26.1.x86_64
.
นี่คือผลลัพธ์ของไคลเอนต์ ssh สำหรับกรณีที่ล้มเหลว:
ssh -vvvv [email protected]
OpenSSH_8.8p1, OpenSSL 1.1.1m 14 ธ.ค. 2564
debug1: อ่านข้อมูลการกำหนดค่า /home/myuser/.ssh/config
debug1: อ่านข้อมูลการกำหนดค่า /usr/etc/ssh/ssh_config
debug1: /usr/etc/ssh/ssh_config บรรทัดที่ 24: รวม /etc/ssh/ssh_config.d/*.conf ที่ไม่ตรงกับไฟล์
debug1: /usr/etc/ssh/ssh_config บรรทัดที่ 26: การใช้ตัวเลือกสำหรับ *
debug2: Solve_canonicalize: ชื่อโฮสต์ 10.84.96.200 คือที่อยู่
debug3: ขยาย UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/myuser/.ssh/known_hosts'
debug3: ขยาย UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/myuser/.ssh/known_hosts2'
debug3: ssh_connect_direct: เข้า
debug1: กำลังเชื่อมต่อกับพอร์ต 10.84.96.200 [10.84.96.200] 22
debug3: set_sock_tos: ตั้งค่าซ็อกเก็ต 3 IP_TOS 0x10
debug1: สร้างการเชื่อมต่อแล้ว
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_rsa ประเภท 0
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_rsa-cert ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_dsa ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_dsa-cert ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_ecdsa ประเภท 2
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_ecdsa-cert ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_ecdsa_sk ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_ecdsa_sk-cert ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_ed25519 ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_ed25519-cert type -1
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_ed25519_sk ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_ed25519_sk-cert ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /home/myuser/.ssh/id_xmss ประเภท -1
debug1: ไฟล์ระบุตัวตน /home/myuser/.ssh/id_xmss-cert type -1
debug1: สตริงเวอร์ชันท้องถิ่น SSH-2.0-OpenSSH_8.8
debug1: โปรโตคอลระยะไกลเวอร์ชัน 2.0, ซอฟต์แวร์ระยะไกลเวอร์ชัน OpenSSH_7.6
debug1: compat_banner: จับคู่: OpenSSH_7.6 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* เข้ากันได้กับ 0x04000002
debug2: fd 3 การตั้งค่า O_NONBLOCK
debug1: ตรวจสอบสิทธิ์ 10.84.96.200:22 เป็น 'myuser'
debug3: record_hostkey: พบคีย์ประเภท ECDSA ในไฟล์ /home/myuser/.ssh/known_hosts:828
debug3: record_hostkey: พบประเภทคีย์ RSA ในไฟล์ /home/myuser/.ssh/known_hosts:2050
debug3: record_hostkey: พบประเภทคีย์ DSA ในไฟล์ /home/myuser/.ssh/known_hosts:2051
debug3: record_hostkey: พบคีย์ประเภท ED25519 ในไฟล์ /home/myuser/.ssh/known_hosts:2052
debug3: load_hostkeys_file: โหลด 4 คีย์จาก 10.84.96.200
debug1: load_hostkeys: fopen /home/myuser/.ssh/known_hosts2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
debug3: order_hostkeyalgs: มีประเภทคีย์การตั้งค่าที่ดีที่สุดที่ตรงกัน [email protected] โดยใช้ HostkeyAlgorithms คำต่อคำ
debug3: ส่งแพ็คเก็ต: ประเภท 20
debug1: SSH2_MSG_KEXINIT ส่ง ```
นี่คือเส้นทางของพีซีสำหรับสถานการณ์นี้ (กรณีที่ 1 ความล้มเหลว):
ค่าเริ่มต้นผ่าน 44.20.6.1 dev br0
10.0.0.0/8 ผ่าน 44.20.11.11 dev enp1s0
44.20.6.0/24 dev br0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 44.20.6.2
44.20.11.0/24 dev enp1s0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 44.20.11.187
กรณีที่ 2 (ผลงาน)
เมื่อฉันเรียกใช้ไคลเอนต์ openVPN โดยตรงบนพีซี Linux ฉันสามารถ ssh ไปยังเซิร์ฟเวอร์ ssh ระยะไกลได้สำเร็จ นี่ทำให้ฉันคิดว่าปัญหาอยู่ที่เราเตอร์ openWRT/openVPN
รุ่นไคลเอนต์ openvpn นี้คือ 2.5.5 x86_64-suse-linux-gnu
นี่คือเส้นทางของ Linux PC เมื่อข้ามเราเตอร์ openWRT และเรียกใช้ไคลเอนต์ openVPN โดยตรงบนพีซี:
ค่าเริ่มต้นผ่าน 44.20.6.1 dev br0
44.20.6.0/24 dev br0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 44.20.6.2
44.20.11.0/24 dev enp1s0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 44.20.11.187
ฉันมีไคลเอนต์ openVPN เพียงหนึ่งอินสแตนซ์ที่ทำงานในเวลาใดก็ตาม
ฉันได้อ่านกระทู้ทั้งหมดที่แนะนำให้เปลี่ยน MTU ฉันได้ลองตั้งค่าเป็น 1492
, 1000
, และ 576
บนอุปกรณ์เครือข่ายของฝั่งไคลเอนต์โดยไม่มีโชค MTU ของเซิร์ฟเวอร์ openVPN ฝั่งเซิร์ฟเวอร์ถูกตั้งค่าเป็น 1492
.
ทั้งไคลเอนต์ Linux PC และ openWRT/openVPN VPN ใช้การกำหนดค่าไคลเอนต์เดียวกัน (รวมส่วนที่เกี่ยวข้อง):
ลูกค้า
ทุนพัฒนา
Keepalive 10 300
reneg วินาที 0
auth-user-pass
ความปลอดภัยของสคริปต์3
ดึง
คีย์คงอยู่
คงอยู่-tun
เซิร์ฟเวอร์ประเภท ns-cert
คอมพ์-lzo
กริยา 6
ปิดเสียง 20
รับรองความถูกต้อง SHA512
รหัส AES-256-CBC
ข้อสังเกตของฉัน:
เนื่องจากสิ่งนี้ใช้งานได้เมื่อเรียกใช้ไคลเอนต์ VPN โดยตรงบนพีซี Linux ฉันไม่เชื่อว่านี่เป็นไคลเอนต์ openVPN หรือการกำหนดค่าเซิร์ฟเวอร์ผิดพลาด ฉันสงสัยว่าปัญหาอยู่ระหว่างเราเตอร์ openWRT/openVPN เมื่อ ssh'ing โดยตรงจากเราเตอร์ openWRT การเชื่อมต่อจะหยุดทำงานเช่นกัน
mtr 10.84.96.200
แสดงว่าไม่มีการสูญเสียแพ็คเก็ต
ฉันสงสัยว่าปัญหาอาจเป็นหนึ่งในสิ่งเหล่านี้:
- ฉันไม่ได้เปลี่ยน MTU บนอุปกรณ์เครือข่ายที่ถูกต้อง
- MTU ควรเป็นค่าอื่นที่ไม่ใช่
1492
, 1000
หรือ 576
- มีการตั้งค่าไฟร์วอลล์บนเราเตอร์ openWRT ที่ทำลายสิ่งนี้
- มีบางอย่างใน openWRT ทำให้สิ่งนี้ล้มเหลว
อุปกรณ์ openWRT เป็นเราเตอร์เดินทาง gl.inet Slate ฉันสามารถเข้าถึงบันทึกได้จากทั้งไคลเอนต์และเซิร์ฟเวอร์ openVPN แต่ฉันไม่สามารถเปลี่ยน openVPN ฝั่งเซิร์ฟเวอร์ได้ ฉันสามารถเข้าถึงและเปลี่ยนเซิร์ฟเวอร์ ssh ฝั่งเซิร์ฟเวอร์ได้
นี่คือแผนภาพที่หวังว่าจะอธิบายได้ชัดเจนยิ่งขึ้น: