ผมขอแนะนำให้กับการใช้ping
เพื่อตรวจสอบการเชื่อมต่อ มีผู้ดูแลระบบเครือข่ายมากเกินไปที่ปิดใช้งานICMP (โปรโตคอลที่ใช้) เนื่องจากความกังวลเกี่ยวกับการโจมตีแบบping ที่เกิดจากเครือข่าย
แต่ฉันใช้การทดสอบอย่างรวดเร็วของเซิร์ฟเวอร์ที่เชื่อถือได้บนพอร์ตที่คุณคาดว่าจะเปิด:
if nc -zw1 google.com 443; then
echo "we have connectivity"
fi
สิ่งนี้ใช้ netcat ( nc
) ในโหมดการสแกนพอร์ตการกระตุ้นอย่างรวดเร็ว ( -z
เป็นโหมด zero-I / O [ใช้สำหรับการสแกน] ) ด้วยการหมดเวลาใช้งานอย่างรวดเร็ว ( -w 1
รออย่างน้อยหนึ่งวินาที) ตรวจสอบ Google ในพอร์ต 443 (HTTPS)
ฉันใช้ HTTPS มากกว่า HTTP เป็นความพยายามในการป้องกันพอร์ทัลที่ถูกจับและพรอกซีที่โปร่งใสซึ่งสามารถตอบพอร์ต 80 (HTTP) สำหรับโฮสต์ใด ๆ สิ่งนี้มีโอกาสน้อยกว่าเมื่อใช้พอร์ต 443 เนื่องจากจะมีใบรับรองไม่ตรงกัน แต่ก็ยังคงเกิดขึ้น
หากคุณต้องการพิสูจน์ด้วยตัวคุณเองคุณจะต้องตรวจสอบความปลอดภัยของการเชื่อมต่อ:
test=google.com
if nc -zw1 $test 443 && echo |openssl s_client -connect $test:443 2>&1 |awk '
handshake && $1 == "Verification" { if ($2=="OK") exit; exit 1 }
$1 $2 == "SSLhandshake" { handshake = 1 }'
then
echo "we have connectivity"
fi
สิ่งนี้จะตรวจสอบการเชื่อมต่อ (แทนที่จะรอให้ openssl หมดเวลา) จากนั้นสร้างการจับมือ SSL โดยป้อนระยะการตรวจสอบ มันจะออกจากเงียบ ๆ ("จริง") หากการยืนยันเป็น "ตกลง" หรือมีข้อผิดพลาดอื่น ("ผิดพลาด") จากนั้นเราจะรายงานการค้นพบ
$ ethtool <dev> | awk '$0 ~ /link detected/{print $3}'