ฉันจะ ping ผ่านเกตเวย์สำรองได้อย่างไร


19

เครือข่ายของเรามีสองโมเด็มแต่ละอันซ่อนอยู่หลังเราเตอร์ เราเตอร์หลักอยู่บน 10.1.1.1, เราเตอร์สำรองอยู่บน 10.1.1.2, และทั้งคู่ถูกกำหนดค่าเป็น 10.1.1.0/24 ซับเน็ต เราเตอร์ทั้งสองมีเกตเวย์ที่กำหนดค่าเป็น 192.168.0.1 อย่างไรก็ตาม 192.168.0.1 ที่คุณเห็นว่าเกตเวย์ของคุณคือ 10.1.1.1 เป็นเครื่องที่แตกต่างจาก 192.168.0.1 ที่คุณเห็นว่าเกตเวย์ของคุณเป็น 10.1.1.2 หรือไม่

เซิร์ฟเวอร์ Nagios ของฉันตั้งค่าตามนั้น:

auto eth0
iface eth0 inet static
address 10.1.1.10
netmask 255.255.255.0
gateway 10.1.1.1

เพื่อให้ชัดเจน: มีสี่เกตเวย์ที่นี่ เราเตอร์ 1 (10.1.1.1) เราเตอร์ 2 (10.1.1.2) โมเด็ม 1 (192.168.0.1) โมเด็ม 2 (192.168.0.1)

นี่คือภาพประกอบของสิ่งที่ฉันสามารถทำได้ด้วยตนเองเพื่อตรวจสอบสถานะของโมเด็มทั้งสอง:

ping -c4 192.168.0.1 # Is Modem1 up? 
ip route add via 10.1.1.2
ip route change default via 10.1.1.2
ping -c4 192.168.0.1 # Is Modem2 up?
wget 192.168.0.1 # yields expected control webpage for Modem2
ip route change default via 10.1.1.1
ip route del default via 10.1.1.2
wget 192.168.0.1 # Connection refused; Modem1 has no web interface
ssh adminuser@192.168.0.1 # I can log in to Modem1 and check status

ฉันต้องการอย่างน้อยที่สุดจะสามารถ ping Modem2

* แก้ไขเพื่อแก้ไขการใช้สัญลักษณ์ CIDR อย่างไม่เหมาะสมและให้รายละเอียดที่ชัดเจน (ฉันไม่คิดว่านี่เป็นของ superuser)


การกำหนดค่า IP ที่คุณใช้ในการเริ่มต้น ping คืออะไร

คำตอบ:


12

man ping

ปลายทาง ping [hop ... ]

ดังนั้นคุณสามารถให้ ping จำนวน IP ที่คั่นด้วย white space เป็นพารามิเตอร์ ที่อยู่สุดท้ายจะเป็น "pinged"; พารามิเตอร์ก่อนหน้านี้กำหนดเส้นทางที่ควรใช้ ping

ดังนั้นในกรณีของคุณ:

  • "ping 10.1.1.2 โมเด็ม" เพื่อใช้เกตเวย์แรกอย่างชัดเจน
  • "ping 10.1.1.1 โมเด็ม" เพื่อใช้เกตเวย์ที่สองอย่างชัดเจน

หากคุณพบปัญหาเดียวกันกับ Windows: ping /? -kเป็นตัวเลือกที่คุณอาจต้องการ

BTW: ping ด้านบนไม่ต้องการสิทธิ์รูทใด ๆ ข้อมูลเส้นทาง (ในกรณีของคุณ: "whishlist") เป็นส่วนหนึ่งของโปรโตคอล ICMP


1
นั่นไม่ได้พาฉันไปที่นั่น ping -c4 10.1.1.2 192.168.0.1ให้ผลสูญเสียต 100% ฉันได้ชี้แจงสถานการณ์ข้างต้น
ลุค Schlather

4
สิ่งนี้ไม่ได้ผลแม้แต่กับรูท ฉันทดสอบสิ่งนี้ขณะที่รับชมtcpdumpและไม่ได้ทำสิ่งที่คุณคิด
bahamat

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

โมเด็มทั้งสองควบคุมโดย ISP ที่ต่างกันของฉัน
ลุค Schlather

ตกลง - ตอนนี้ฉันเข้าใจ IP เดียวกันของเราเตอร์แล้ว นี่เป็นการเชื่อมต่อแบบออนดีมานด์และคุณต้องการ failover หรือไม่?
นิลส์

11

ทั้งping -Nมิได้arpingทำงานสำหรับฉันฉันตัดสินสุดท้ายกับการแก้ปัญหาจากคำตอบนี้ :

คุณสามารถใช้เครื่องมือnpingจากแพ็คเกจnmap :

# nping --icmp --dest-mac [gateway mac] [target ip]

คุณสามารถค้นหา mac ของเราเตอร์ได้ในแคช ARP ในพื้นที่ของคุณ:

$ arp -v [gateway ip]

เครื่องมือนี้ยังสนับสนุนประเภท ping แตกต่างกันเช่นหรือ--tcp--udp


ขอบคุณสำหรับสิ่งนี้. ข้อเสนอแนะของคุณในการใช้ nping เป็นวิธีเดียวที่ฉันได้พบ (นอกเหนือจากการเพิ่มในเส้นทางที่เฉพาะเจาะจงและการใช้ไบนารีปิงปกติ) ในการส่ง ICMP echo-คำร้องขอ (ปิง) ไปยังเราเตอร์สำรองข้อมูล dial-on-demand 3G (สำหรับการทดสอบ เพื่อให้แน่ใจว่าเชื่อมต่อและมีการเชื่อมต่ออินเทอร์เน็ตจริงเมื่อเชื่อมต่อ) ทำได้โดยกำหนดเป้าหมายที่อยู่ MAC ของเราเตอร์เมื่อส่งแพ็คเก็ต ICMP ซึ่ง nping ช่วยให้คุณสามารถทำได้ ยูทิลิตี้เล็ก ๆ น้อย ๆ ที่มีประโยชน์มาก!
parkamark

2

ขออภัยคุณมีเกตเวย์เริ่มต้นได้เพียงเกตเวย์เดียวเท่านั้น คุณสามารถมีเกตเวย์ได้หลายแห่ง แต่จะมีเพียงเกตเวย์เดียวสำหรับทุกเครือข่าย

ปัญหาคือว่า IP ที่กล่าวถึงทั้งสองอยู่ในเครือข่ายเดียวกัน และคุณระบุ CIDR ของคุณอย่างไม่ถูกต้อง: คุณหมายถึง 10.1.1.0/24 ว่ามีซับเน็ตของ 255.255.255.0; หรือแม้กระทั่งมีซับเน็ตที่ใหญ่กว่าเช่น 10.0.0.0/8 เหมือนกับ 255.0.0.0

คุณสามารถปิงโฮสต์ใด ๆ ภายในเครือข่ายของคุณ (10.0.0.0/8) หรือโฮสต์ใด ๆ ที่สามารถเข้าถึงได้ผ่านเกตเวย์ (หรือ) แต่มีสองเกตเวย์สำหรับเครือข่ายเดียวกันเป็นไปไม่ได้


1
ฉันหมายถึง 10.1.1.1/24 เป็นชวเลขสำหรับ 10.1.1.1 บนซับเน็ต 10.1.1.0/24 ขออภัยฉันจะไม่ใช้ชวเลขนั้นอีกครั้งมันผิดอย่างชัดเจน ฉันยังมีปัญหาการตรวจสอบ - ฉันได้เพิ่มรายละเอียดด้านบน ฉันไม่สามารถแก้ปัญหานี้ได้หากไม่ติดตั้งเราเตอร์ที่ดีกว่าไว้ที่ 10.1.1.2?
ลุค Schlather

2

ใช้arping :

# arping -c 1 -S [source_ip] -T [target_remote_ip] [gateway_mac_address]

ที่ไหน:

  • source_ip เป็น IP ที่ได้รับมอบหมายบนโฮสต์ของคุณ
  • target_remote_ip เป็นที่อยู่ IP ที่คุณต้องการ ping
  • gateway_mac_address เป็นที่อยู่เลเยอร์ 2 อีเธอร์ของเกตเวย์สำรองที่คุณต้องการใช้

อีกทางเลือกหนึ่งถ้าคุณใช้ Solaris บางรูปแบบคุณสามารถใช้:

ping -N [gateway_ip] [target_remote_ip]

ดูเหมือนว่าจะมีแนวโน้มถึงแม้ว่าฉันเดาว่า iproute2 arping จะไม่ตัดมัน ... บางทีฉันอาจต้องเปลี่ยนเราเตอร์ด้วยบางสิ่งที่ฉันสามารถเปลี่ยนให้เป็นแบบนี้ได้
ลุค Schlather

1
iproute2's arpingที่แตกต่างกัน หากคุณใช้ arping จากiproute2เพื่อทำอาร์พที่ไม่มีค่าฉันขอแนะนำให้ใช้send_arpจากfakeแทน นอกจากนี้เกตเวย์จะต้องเป็นสิ่งที่จะส่งต่อแพ็กเก็ต IP
bahamat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.