เซิร์ฟเวอร์: OCServ
ocserv 0.12.6
รวบรวมด้วย: seccomp, tcp-wrappers, คำสาบาน, รัศมี, gssapi, PAM, PKCS#11, AnyConnect
รุ่น GnuTLS: 3.6.13 (คอมไพล์ด้วย 3.6.11)
ลูกค้า: openconnect
OpenConnect รุ่น v8.10-2build1~ubuntu20.04.1~ppa1
ใช้ GnuTLS 3.6.13 คุณสมบัติปัจจุบัน: TPMv2, PKCS#11, โทเค็นซอฟต์แวร์ RSA, โทเค็นซอฟต์แวร์ HOTP, โทเค็นซอฟต์แวร์ TOTP, Yubikey OATH, ปุ่มระบบ, DTLS, ESP
โปรโตคอลที่รองรับ: anyconnect (ค่าเริ่มต้น), nc, gp, ชีพจร
แผนภาพเครือข่าย
กล่องวีพีเอส
|--------------------------------------------- --------------------------|
| อื่น ๆ *< ----+ |
| | vpn.<domain>.com rev proxy pass-thru ไปยัง |
| |------@HA พร็อกซี -----------| 127.0.1.1:443 |
| | | (SSL จัดการโดย ocserv) |
| [TCP 80 & TCP 443] | |
inet --> IP สาธารณะ -> 10.10.0.5 |---> 127.0.1.1 |
| [udp 44443] [tcp 443] |
| \ | |
| \ @ |
| \--------------------------------------=@ocserv กำลังฟัง |
| tcp 127.0.1.1:443 และ udp 10.10.0.5:44443 |
|--------------------------------------------- --------------------------|
บันทึก:
สิ่งที่ฉันเผชิญอย่างมีประสิทธิภาพมีดังนี้:
- สามารถเชื่อมต่อได้ไม่มีปัญหา
แยกคนงาน
ถูกตั้งค่าเป็น เท็จ
ในการกำหนดค่า
- เดอะ
UDP พอร์ต
ใน conf ตั้งค่าเป็น 44443
(ไม่ใช่ 443) เพื่อแยกแยะปัญหาเฉพาะ VPS บนพอร์ตนั้น
- DTLS ถูกสร้างขึ้นโดยไม่มีปัญหา
- ใบรับรอง SSL ของเซิร์ฟเวอร์เป็นใบรับรองตัวแทน
libpam-หมวก
ถูกปิดใช้งานบนกล่อง VPS ที่อินสแตนซ์ ocserv กำลังทำงานอยู่ เพื่อแก้ไขปัญหาข้อขัดข้องตามที่ระบุไว้ ที่นี่
- ปัญหาที่ระบุไว้ด้านล่างมีให้เห็นไม่ว่าจะมีการสร้าง DTLS หรือไม่ก็ตาม (ฉันตั้งค่า
udp-ฟังโฮสต์
ที่อยู่ไปยังอินเทอร์เฟซ lo เพื่อให้แน่ใจว่าแพ็กเก็ต UDP ที่บันทึกบน IP สาธารณะไม่ได้ส่งไปยัง OCServ ดังนั้นจะไม่มีการสร้าง DTLS)
- ปัญหา ดูเหมือนเป็นการสุ่มหรืออาจจะเป็นช่วงปกติ ดูเหมือนว่าการเชื่อมต่อจะถูกรีเซ็ตด้วย
เปิดการเชื่อมต่อ
การรายงาน ข้อผิดพลาดในการอ่าน SSL: การเชื่อมต่อ TLS ถูกยกเลิกอย่างไม่ถูกต้อง; กำลังเชื่อมต่อใหม่
(บรรทัดที่ 191 ของล็อกไฟล์ openconnectout_20211108.log
). ดูเหมือนว่า OCServ ที่ฝั่งเซิร์ฟเวอร์จะรายงานข้อผิดพลาดดังต่อไปนี้ (แนบบันทึกรายละเอียดแบบเต็มสำหรับทั้ง openconnect และ ocserv) ก่อนที่ข้อผิดพลาดนี้จะปรากฏขึ้น บันทึกไคลเอนต์ openconnect แสดงหลายบรรทัดของ ส่งแพ็คเก็ต DTLS ขนาด 48 ไบต์; DTLS ส่งกลับ 42\rไม่มีงานให้ทำ นอนมา 27,000 มิลลิวินาที...
ระบุว่าแพ็กเก็ต DTLS กำลังถูกสื่อสาร ข้อมูลเดียวกันนี้สามารถเห็นได้ในบันทึกของ ocserv เช่นกัน บันทึก ocserv ด้านล่างสามารถดูได้ในบรรทัดที่ 589 ของไฟล์บันทึก ocservout_20211108.log
ocserv[<first_worker_pid>]: ผู้ปฏิบัติงาน[<ชื่อผู้ใช้>]: <vpn_client_public_ip_address> ได้รับ 42 ไบต์ (DTLS)
ocserv[<first_worker_pid>]: ผู้ปฏิบัติงาน[<ชื่อผู้ใช้>]: <vpn_client_public_ip_address> ขยายขนาด 41 เป็น 48
ocserv[<first_worker_pid>]: ผู้ปฏิบัติงาน[<ชื่อผู้ใช้>]: <vpn_client_public_ip_address> กำลังเขียน 48 ไบต์ไปยัง TUN
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/buffers.c[_gnutls_io_write_flush]:696
ocserv[<first_worker_pid>]: TLS[<5>]: REC: กำลังส่งการแจ้งเตือน[1|0] - ปิดการแจ้งเตือน
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae54b60]: กำลังเตรียม Packet Alert(21) ที่มีความยาว: 2 และแผ่นขั้นต่ำ: 0
ocserv[<first_worker_pid>]: TLS[<9>]: ENC[0x55f94ae54b60]: cipher: AES-256-GCM, MAC: AEAD, Epoch: 2
ocserv[<first_worker_pid>]: TLS[<2>]: WRITE: -1 คืนจาก 0x9, errno: 32
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/buffers.c[errno_to_gerr]:230
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/buffers.c[_gnutls_io_write_flush]:722
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/record.c[_gnutls_send_tlen_int]:588
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/record.c[gnutls_bye]:304
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae54b60]: เริ่มต้นการล้างข้อมูลยุค
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae54b60]: สิ้นสุดการล้างข้อมูลยุค
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae54b60]: Epoch #2 ว่าง
ocserv[<first_worker_pid>]: TLS[<3>]: ASSERT: ../../lib/buffers.c[_gnutls_io_write_flush]:696
ocserv[<first_worker_pid>]: TLS[<5>]: REC: กำลังส่งการแจ้งเตือน[1|0] - ปิดการแจ้งเตือน
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae46800]: กำลังเตรียม Packet Alert(21) ที่มีความยาว: 2 และแป้นรองขั้นต่ำ: 0
ocserv[<first_worker_pid>]: TLS[<9>]: ENC[0x55f94ae46800]: cipher: AES-256-GCM, MAC: AEAD, Epoch: 1
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae46800]: ส่งแพ็คเก็ต[281474976710664] Alert(21) ใน epoch 1 และความยาว: 39
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae46800]: เริ่มต้นการล้างข้อมูลยุค
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae46800]: สิ้นสุดการล้างข้อมูลยุค
ocserv[<first_worker_pid>]: TLS[<5>]: REC[0x55f94ae46800]: Epoch #1 ว่าง
ocserv[<first_worker_pid>]: ผู้ปฏิบัติงาน[<ชื่อผู้ใช้>]: <vpn_client_public_ip_address> ส่งข้อความ 'sm: ผู้ปฏิบัติงาน cli สถิติ' ถึง secmod
ocserv[<secmod_pid>]: sec-mod: ได้รับคำขอจาก pid <first_worker_pid> และ uid 65534
ocserv[<secmod_pid>]: sec-mod: cmd [ขนาด=73] sm: สถิติ cli ของผู้ปฏิบัติงาน
ocserv[<first_worker_pid>]: worker[<username>]: <vpn_client_public_ip_address> ส่งสถิติเป็นระยะ (ใน: 192, ออก: 496) ไปยัง sec-mod
ocserv[<ocserv_main_pid>]: main[<ชื่อผู้ใช้>]:<vpn_client_public_ip_address>:47586 พนักงานถูกยกเลิก
ocserv[<ocserv_main_pid>]: main[<ชื่อผู้ใช้>]:<vpn_client_public_ip_address>:47586 กำลังส่งข้อความ smg: เซสชันใกล้กับ sec-mod
ocserv[<secmod_pid>]: sec-mod: ได้รับคำขอ sm: ปิดเซสชัน
ocserv[<secmod_pid>]: วินาที-mod: cmd [ขนาด=40] sm: ปิดเซสชัน
ocserv[<secmod_pid>]: sec-mod: ปิดเซสชันชั่วคราวสำหรับ <ชื่อผู้ใช้> (เซสชัน: <session_ID>)
ocserv[<ocserv_main_pid>]: main[<ชื่อผู้ใช้>]:<vpn_client_public_ip_address>:47586 ผู้ใช้ถูกตัดการเชื่อมต่อ (เหตุผล: ข้อผิดพลาดที่ไม่ได้ระบุ, rx: 192, tx: 496)
- บรรทัดที่ 4 ในสารสกัดด้านบน (บรรทัดที่ 592 ของไฟล์บันทึก
ocservout_20211108.log
) คือจุดที่ดูเหมือนว่าปัญหาจะเกิดขึ้น
- ข้อมูล: ประมาณบรรทัดที่ 887 ของไฟล์บันทึก
ocservout_20211108.log
ละเว้นข้อความรอบ ๆ ไคลเอนต์ที่ปิดการเชื่อมต่อก่อนเวลาอันควรเนื่องจากนั่นเป็นเพียงการฆ่า openconnect บนเครื่องไคลเอนต์
- พบปัญหาที่คล้ายกันเมื่อใช้ OpenConnect GUI สำหรับ Windows รวมถึงแอป Android OpenConnect
มีคำแนะนำเกี่ยวกับวิธีแก้ไขปัญหานี้หรือไม่? ฉันต้องการหลีกเลี่ยงการเชื่อมต่อ VPN ที่เกิดขึ้นและปิดบ่อยๆ
ocservout_20211108.log (ได้จากการทำ sudo ocserve -f -c /etc/ocserv/ocserv.conf -d 9999 > outfile.log 2>&1
)
openconnectout_20211108.log (ได้จากการทำ echo -n obfuscated_password | sudo openconnect -b vpn.<โดเมน>.com:443 -u obfuscated_username --passwd-on-stdin -vvv --dump-http-traffic > outfile.log 2>&1
)
บันทึก ข้อมูลที่ละเอียดอ่อนจากไฟล์บันทึกด้านบนได้รับการปกปิด/OBFUSCATED