Score:1

การเชื่อมต่อ OpenVPN จะรีเซ็ตทุกๆ 2 นาที

ธง vn

ฉันมีเซิร์ฟเวอร์ OpenVPN ที่ทำงานบน Ubuntu ใน AWS และใช้ Tunnelblick บน macOS เพื่อเชื่อมต่อ ฉันไม่มีปัญหาในการเชื่อมต่อกับเซิร์ฟเวอร์ VPN อื่น ๆ แต่ดูเหมือนว่าเซิร์ฟเวอร์นี้จะหมดเวลา/รีเซ็ตทุก ๆ 2 นาที

โปรไฟล์ OVPN ของฉัน:

ลูกค้า
ทุนพัฒนา
โปรโตคอล udp
รีโมท ............... 1194
resolv-retry ไม่มีที่สิ้นสุด
ไม่ผูกมัด
ผู้ใช้ไม่มีใคร
กลุ่มโนกรุ๊ป
คีย์คงอยู่
คงอยู่-tun
เซิร์ฟเวอร์ระยะไกล cert-tls
รหัส AES-256-CBC
กริยา 3
รหัส AES-128-CBC
รับรองความถูกต้อง SHA256
ทิศทางที่สำคัญ 1
<ca>
-----เริ่มต้นใบรับรอง-----
...
-----จบใบรับรอง-----
</ca>
<ใบรับรอง>
ใบรับรอง:
    ข้อมูล:
        รุ่น: 3 (0x2)
...
-----เริ่มต้นใบรับรอง-----
...
-----จบใบรับรอง-----
</cert>
<คีย์>
----- เริ่มต้นรหัสส่วนตัว -----
...
----- สิ้นสุดรหัสส่วนตัว -----
</คีย์>
<tls-auth>
#
# คีย์คงที่ OpenVPN 2048 บิต
#
----- เริ่มต้น OpenVPN รหัสคงที่ V1-----
...
----- สิ้นสุดคีย์ OpenVPN แบบคงที่ V1-----
</tls-auth>

ในการเชื่อมต่อ เซิร์ฟเวอร์จะพุชการตั้งค่าต่อไปนี้:

PUSH: ได้รับข้อความควบคุม: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,route 172.16.0.0 255.255.240.0,route 172.16.16.0 255.255.240.0,route 172.16.128.0 255.255.route4 172.16.144.0 255.255.240.0,เส้นทาง 10.8.0.1,โทโพโลยี net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 1,cipher AES-256-GCM'

(หมายเหตุโดยเฉพาะ ping 10, ping-รีสตาร์ท 120)

เพิ่มระดับการบันทึกบนไคลเอ็นต์ ดูเหมือนว่าการเชื่อมต่อกำลังส่งแพ็กเก็ตข้อมูล:

2021-09-03 11:31:21.848620 UDP WRITE [62] ถึง [AF_INET]...:1194: P_ACK_V1 kid=0 pid=[ #13 ] [ 6 ]
2021-09-03 11:31:21.848768 UDP WRITE [130] ถึง [AF_INET]...:1194: P_DATA_V2 kid=0 DATA len=129
2021-09-03 11:31:21.848856 UDP WRITE [226] ถึง [AF_INET]...:1194: P_DATA_V2 kid=0 DATA len=225

อย่างไรก็ตาม การเชื่อมต่อมักจะหยุดทำงานหลังจากผ่านไปประมาณ 2 นาที สถานะบันทึกไคลเอ็นต์:

2021-09-03 11:40:26.121900 [cc-vpn] การหมดเวลาของการไม่ใช้งาน (--ping-restart), การรีสตาร์ท
2021-09-03 11:40:26.122379 ได้รับ SIGUSR1[soft,ping-restart] แล้ว กระบวนการเริ่มต้นใหม่
2021-09-03 11:40:26.122504 การจัดการ: >STATE:1630683626,RECONNECTING,ping-restart,,,,,
2021-09-03 11:40:26.448969 การจัดการ: CMD 'ระงับการปล่อย'

ไม่มีสิ่งใดในบันทึกของเซิร์ฟเวอร์นอกจากการรีสตาร์ทการเชื่อมต่อ

การหมดเวลา 2 นาทีนั้นสมเหตุสมผลเนื่องจาก ping-restart 120 การตั้งค่าส่งไปยังไคลเอนต์ แต่ฉันไม่ชัดเจนว่าทำไมจึงคิดว่าไม่ได้ใช้งาน ฉันพลาดอะไรไป มีการตั้งค่าบนไคลเอนต์ที่หยุดการส่ง ping ไปยังเซิร์ฟเวอร์อย่างถูกต้องหรือไม่?

การเพิ่ม ping/ping-restart โดยเฉพาะในการกำหนดค่าไคลเอ็นต์ดูเหมือนจะไม่ช่วย (ฉันคิดว่าเซิร์ฟเวอร์ PUSH จะถูกแทนที่ด้วย)

ฉันจะดีบักสิ่งนี้และหาสาเหตุที่ทำให้การเชื่อมต่อไม่คงอยู่ได้อย่างไร

Nikita Kipriyanov avatar
za flag
เป็นไปได้ไหมว่าคุณมีไคลเอนต์สองเครื่องที่ใช้ใบรับรอง/คู่คีย์เดียวกันและทำงานพร้อมกัน
DrTeeth avatar
vn flag
ใช่. แค่นั้นแหละ. ฉันพบคำตอบอื่นๆ สองสามข้อที่แนะนำ แต่ฉันไม่พบลูกค้ารายอื่น และฉันรู้ว่าไม่มีลูกค้ารายใดทำงานอยู่ กลายเป็นว่าคนอื่นมีคอนเทนเนอร์เก่าที่ทำงานอยู่ในพื้นหลังซึ่งยังคงใช้งานอยู่ ยิ่งไปกว่านั้น ไคลเอนต์ทั้งสองพยายามเชื่อมต่อใหม่ทุกครั้งที่ถูกตัดการเชื่อมต่อ ดังนั้นพวกเขาจึงแค่ต่อสู้เพื่อการเชื่อมต่อ ฉันหวังว่าข้อความแสดงข้อผิดพลาดจะดีกว่านี้... มันไม่ใช่ "หมดเวลาใช้งาน" จริงๆ... @NikitaKipriyanov หากคุณต้องการเขียนคำตอบนี้ เรายินดีที่จะให้เครดิตแก่คุณ มิฉะนั้นฉันจะเขียนความโง่เขลาของตัวเอง
Score:1
ธง za

นี่เป็นสัญญาณว่ามีไคลเอนต์มากกว่าหนึ่งรายที่ใช้คู่คีย์/ใบรับรองนี้:

  • (1) รับรองความถูกต้อง
  • (2) รับรอง; เซิร์ฟเวอร์เห็นใบรับรองเดียวกัน จึงคิดว่าเพิ่งเปลี่ยนการเชื่อมต่อ และ (1) จะไม่ได้รับ Keepalive Ping อีกต่อไป
  • (1) พลาดการ ping บางส่วน ตัดสินใจว่าการเชื่อมต่อหยุดทำงานและเชื่อมต่อใหม่ ตอนนี้ (2) จะไม่ได้รับการ ping
  • (2) พลาดการ ping บางส่วน ตัดสินใจว่าการเชื่อมต่อหยุดทำงานและเชื่อมต่อใหม่ ตอนนี้ (1) จะไม่ได้รับการ ping

คุณเห็นสิ่งที่เกิดขึ้นและยังชัดเจนว่าระยะหมดเวลาของการไม่ใช้งานถูกกำหนดโดยวิธีใด ping-รีสตาร์ท มีส่วนเกี่ยวข้องที่นี่

เพื่อให้สิ่งนี้ไม่เกิดขึ้น คุณต้องจัดการ VPN CA ของคุณอย่างระมัดระวัง โดยเฉพาะอย่างยิ่ง:

  • ติดตามตำแหน่งที่ติดตั้งคีย์ของคุณและใครเป็นผู้รับผิดชอบอุปกรณ์ที่ติดตั้งคีย์แต่ละรายการ มีวิธีติดต่อใครก็ตามที่มีคีย์ VPN ที่ใช้งานอยู่ (เช่น บันทึกหมายเลขโทรศัพท์ อีเมล ฯลฯ คุณอาจตั้งค่า OpenSSL เพื่อให้ระบบถามข้อมูลนั้นในระหว่างการออกใบรับรองและบันทึกข้อมูลนั้นลงในใบรับรองและดัชนี CA โดยตรง) .
  • ห้ามใช้คีย์/ใบรับรองเดียวกันมากกว่าหนึ่งครั้ง ไม่เคยใส่คีย์/ใบรับรองเข้าไป แม่แบบ; หากคุณโคลนระบบบางระบบ ให้ล้างคีย์ที่นั่น คีย์จะต้องสร้างและออกใบรับรองใหม่ทุกครั้งเมื่อเปิดระบบ ปรับใช้.
  • หากผู้ใช้บางคนขอคีย์/ใบรับรอง (อื่น) ในขณะที่มีคีย์/ใบรับรองที่ใช้งานอยู่ พวกเขาต้องอธิบายว่าทำไมพวกเขาอาจสูญเสียข้อมูลเก่าเนื่องจากติดตั้ง OS ใหม่และลืมบันทึกการกำหนดค่า VPN หรือพวกเขาอาจต้องการ VPN บนคอมพิวเตอร์เครื่องอื่น หรืออะไรก็ตาม ประเมินคำอธิบายของพวกเขาก่อนอื่น ถอน รหัสเก่าก่อนที่จะออกรหัสใหม่หรือออกรหัสกับ CN อื่นเพื่อหลีกเลี่ยงการปะทะกัน
  • แจ้งให้ผู้ใช้ทราบเสมอว่าคีย์/ใบรับรองของตนไม่ได้ใช้อีกต่อไป (คีย์/ใบรับรองสูญหายหรือเหตุผลในการออกใบรับรองสูญหาย) เพื่อให้คุณสามารถเพิกถอนได้ และคุณต้องยกเลิก
  • สำคัญมาก ให้ความรู้แก่ผู้ใช้ อย่างลวกๆ แจ้งให้คุณทราบหากสงสัยว่าคีย์/ใบรับรองถูกขโมย ซึ่งในกรณีนี้ คุณต้องเพิกถอนทันที

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

DrTeeth avatar
vn flag
ฉันหวังว่าไคลเอนต์หรือเซิร์ฟเวอร์จะมีข้อความแสดงข้อผิดพลาดที่ดีกว่า - ไม่ใช่ "หมดเวลาใช้งาน" จริงๆ แต่เป็นไคลเอนต์สองรายที่พยายามขโมยการเชื่อมต่อที่ใช้งานอยู่จากกันและกัน ที่กล่าวว่านี่คือคำตอบสำหรับฉัน - มีคนอื่นใช้โปรไฟล์บนเครื่องที่เราไม่ได้ใช้งานจริงๆ อีกต่อไป และถูกทิ้งให้พยายามเชื่อมต่อ/เชื่อมต่อใหม่ในขณะที่ฉันพยายามทำเช่นเดียวกัน
Nikita Kipriyanov avatar
za flag
เซิร์ฟเวอร์ไม่สามารถทำได้ เพียงแค่รายงานสิ่งที่เห็น: ลูกค้าเชื่อมต่อซ้ำแล้วซ้ำอีก ไม่สามารถเชื่อมโยงความพยายามในการเชื่อมต่อในภายหลังได้อย่างง่ายดายและตัดสินใจว่า "นี่คือไคลเอนต์ที่ขัดแย้งกันสองรายการที่มีใบรับรองเดียวกัน" การรับรองความถูกต้องใหม่แต่ละครั้งมาจากคู่ใหม่ (ที่อยู่, พอร์ต) ดังนั้นในขณะที่อาจมี *ข้อมูลเชิงลึก* เหล่านี้ *อาจ* เป็นไคลเอนต์เพียงสองเครื่อง แต่ก็ไม่มีวิธีที่เชื่อถือได้ในการระบุ ฉันเคยเห็นกรณีที่ข้อมูลเชิงลึกนี้ผิดพลาด ไม่มีใครต้องการให้ข้อความแสดงข้อผิดพลาดของเซิร์ฟเวอร์ *ทำให้เข้าใจผิด* ดังนั้นควรคงไว้ตามเดิมจะดีกว่า
DrTeeth avatar
vn flag
ฉันยังไม่มั่นใจว่าเซิร์ฟเวอร์ทำอะไรไม่ได้ ลูกค้า A เชื่อมต่อ จากนั้นไคลเอ็นต์ B จะเชื่อมต่อ ทำให้การเชื่อมต่อไคลเอ็นต์ A ไม่ถูกต้องอีกต่อไปเนื่องจากใช้ใบรับรองเดียวกัน มีเพียงเซิร์ฟเวอร์เท่านั้นที่รู้ว่าการเชื่อมต่อหนึ่งใช้การไม่ได้เนื่องจากไคลเอนต์อื่นเชื่อมต่ออยู่ เมื่อถึงจุดนั้น เซิร์ฟเวอร์สามารถ a) ส่งข้อความไปยังไฟล์บันทึกของตัวเอง (ฉันไม่เห็นเลย) b) ส่งข้อความไปยังไคลเอนต์หนึ่งหรือทั้งสองไคลเอ็นต์ว่าไคลเอนต์หลายตัวพยายามใช้ใบรับรองเดียวกัน (คล้ายกับ DNS แบบคงที่ ข้อความขัดแย้งโดยใช้ IP เดียวกัน) c) ติดตาม IP และส่งข้อความไปยังไคลเอนต์ที่เชื่อมต่อใหม่
DrTeeth avatar
vn flag
แต่ฉันเข้าใจว่านี่เป็นการตัดสินใจด้านการออกแบบของ OpenVPN ดังนั้นจึงอยู่นอกเหนือขอบเขตนี้ เพียงแค่... บางทีถ้านักพัฒนา OpenVPN เกิดเบื่อที่จะอ่านความคิดเห็นเหล่านี้ในคืนหนึ่ง...

โพสต์คำตอบ

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