ฉันได้เริ่มต้นการตรวจสอบอัตโนมัติด้วยเวลาโพล 30 วินาที:
AUTOSSH_POLL=30 AUTOSSH_LOGLEVEL=7 autossh -M 0 -f -S none -f -N -L localhost:34567:localhost:6543 user1@server1
และมันก็ทำงานได้ดี:
Sep 5 12:26:44 serverA autossh[20935]: check on child 23084
Sep 5 12:26:44 serverA autossh[20935]: set alarm for 30 secs
แต่ถ้าฉันถอดสายเคเบิลเครือข่ายทางกายภาพหมายถึงอุโมงค์ไม่สามารถทำงานได้อีกต่อไปการตรวจสอบอัตโนมัติจะไม่ฆ่า ssh daemon ทำไม? ฉันเข้าใจว่า autossh ไม่สามารถทำอะไรได้หากลิงก์ไม่ทำงาน แต่ในความคิดของฉันฉันควรลองทำสิ่งต่อไปนี้:
- ตรวจสอบกระบวนการ child ssh (
check on child ...
) - ตรวจสอบไกลสุด !!! (การดำเนินการเหมือน ping ผ่านอุโมงค์)
- ตระหนักดีว่าอุโมงค์ไม่ทำงาน
- หยุดกระบวนการ ssh
- ลองสร้างอุโมงค์อีกครั้ง
- ตระหนักดีว่ามันไม่ทำงานและตั้งค่าตัวจับเวลา (เพิ่มทวีคูณ?) เพื่อตรวจสอบอีกครั้งในไม่ช้า
นั่นคือสาเหตุที่ฉันใช้การตรวจสอบอัตโนมัติ: หากมีบางอย่างเกิดขึ้นกับอุโมงค์ (ไม่ว่าจะเป็นปัญหาซอฟต์แวร์หรือฮาร์ดแวร์) ก็ควรพยายามเริ่มต้นใหม่ แต่มันกำลังรอให้กระบวนการ ssh ตาย ไม่ควรพยายามเริ่มต้นใหม่แม้ว่าจะไม่มีความหวังในการสร้างการเชื่อมต่อใหม่อีกครั้ง
เช็คประเภทใดที่ทำการตรวจสอบอัตโนมัติ เพียงตรวจสอบว่า ssh ทำงานแล้วหรือยัง? มันไม่ได้ทำการตรวจสอบไกล ๆ หรือไม่?
แก้ไข
ตามที่ร้องขอฉันจะเพิ่มส่วนที่เกี่ยวข้องของการกำหนดค่า ssh:
# (see http://aaroncrane.co.uk/2008/04/ssh_faster)
# The ServerAliveInterval tells SSH to send a keepalive message every 60 seconds while the connection is open;
# that both helps poor-quality NAT routers understand that the NAT table entry for your connection should
# be kept alive, and helps SSH detect when there’s a network problem between the server and client.
ServerAliveInterval 60
# The ServerAliveCountMax says that after 60 consecutive unanswered keepalive messages, the connection should
# be dropped. At that point, AutoSSH should try to invoke a fresh SSH client. You can tweak those
# specific values if you want, but they seem to work well for me.
ServerAliveCountMax 60
TCPKeepAlive yes
dev tun
ทั้งในและตั้งค่าremote
ในไคลเอนต์ บิตที่น่ารำคาญเพียงอย่างเดียวคือการจัดการใบรับรอง เราใช้ CA 'easy-rsa' ที่มาพร้อมกับ OpenVPN เมื่อคุณมีใบรับรองแล้วส่วนที่เหลือก็ง่าย