Bagaimana saya bisa melakukan ping melalui gateway alternatif?

19

Jaringan kami memiliki dua modem, masing-masing tersembunyi di belakang router. Router utama pada 10.1.1.1, router cadangan pada 10.1.1.2, dan keduanya dikonfigurasi untuk subnet 10.1.1.0/24. Kedua router memiliki gateway dikonfigurasikan ke 192.168.0.1. Namun, 192.168.0.1 yang Anda lihat jika gateway Anda 10.1.1.1 adalah mesin yang berbeda dari 192.168.0.1 yang Anda lihat apakah gateway Anda 10.1.1.2.

Server Nagios saya telah diatur sesuai:

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

Jadi untuk menjadi jelas: ada empat gateway di sini. Router1 (10.1.1.1) Router2 (10.1.1.2) Modem1 (192.168.0.1) Modem2 (192.168.0.1)

Berikut ini ilustrasi yang dapat saya lakukan secara manual untuk memeriksa status kedua modem:

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 [email protected] # I can log in to Modem1 and check status

Saya ingin minimal dapat melakukan ping Modem2.

* Diedit untuk memperbaiki penyalahgunaan notasi CIDR saya yang keji, dan memberikan detail yang jelas. (Saya tidak berpikir ini milik superuser.)

Luke Schlather
sumber
Apa konfigurasi IP dari mana Anda memulai ping?

Jawaban:

12

man ping

ping tujuan [hop ...]

Jadi Anda bisa memberikan ping sejumlah IP yang dipisahkan oleh spasi sebagai parameter. Alamat terakhir akan "ping"; parameter sebelumnya menentukan rute yang harus diambil ping.

Jadi dalam kasus Anda:

  • "ping 10.1.1.2 modem" untuk secara eksplisit menggunakan gateway pertama,
  • "ping 10.1.1.1 modem" untuk secara eksplisit menggunakan gateway kedua.

Jika Anda mengalami masalah yang sama dengan Windows: ping /? -kadalah opsi yang mungkin Anda inginkan.

BTW: Ping di atas tidak memerlukan hak akses root apa pun. Informasi perutean (dalam kasus Anda: "whishlist") adalah bagian dari protokol ICMP.

Nils
sumber
1
Itu tidak membuat saya di sana. ping -c4 10.1.1.2 192.168.0.1menghasilkan paket loss 100%. Saya sudah mengklarifikasi situasi di atas.
Luke Schlather
4
Ini sebenarnya tidak bekerja sama sekali, bahkan dengan root. Saya menguji ini dengan sambil menonton tcpdump, dan itu tidak melakukan apa yang Anda pikirkan.
bahamat
Apa yang terjadi jika Anda menghapus gateway default sepenuhnya? Saya masih tidak mengerti pengaturan Anda. Mengapa Anda menggunakan alamat "router" yang identik pada kedua modem?
Nils
Kedua modem dikontrol oleh ISP saya yang berbeda.
Luke Schlather
Ok - Saya sekarang mengerti IP dari router yang sama. Apakah ini koneksi berdasarkan permintaan dan Anda ingin failover?
Nils
11

Tidak ping -Njuga tidak arpingbekerja untuk saya, saya akhirnya memutuskan dengan solusi dari jawaban ini :

Anda dapat menggunakan alat nping dari paket nmap :

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

Anda dapat menemukan mac router Anda di cache ARP lokal Anda:

$ arp -v [gateway ip]

Alat ini juga mendukung berbagai jenis ping, seperti --tcpatau --udp.

Tho85
sumber
Terima kasih untuk ini. Saran Anda untuk menggunakan nping adalah satu-satunya metode yang saya temukan (selain menambahkan rute tertentu dan menggunakan binary ping normal) untuk mengirim ICMP echo-request (ping) menuju router cadangan 3G dial-on-demand (untuk tujuan pengujian , untuk memastikan itu terhubung dan memiliki konektivitas internet yang nyata setelah terhubung), dicapai dengan menargetkan alamat MAC router saat mengirim paket ICMP, yang memungkinkan Anda untuk melakukannya. Utilitas kecil yang sangat berguna!
parkamark
2

Maaf, Anda hanya dapat memiliki satu gateway default . Anda dapat memiliki beberapa gateway, tetapi hanya satu untuk setiap jaringan.

Masalahnya adalah, bahwa kedua IP yang disebutkan berada di jaringan yang sama. Anda juga salah menentukan CIDR Anda: Maksud Anda 10.1.1.0/24 memiliki subnet 255.255.255.0; atau bahkan memiliki subnet yang lebih besar misalnya 10.0.0.0/8 sebagai 255.0.0.0.

Karena itu Anda dapat melakukan ping host mana pun di dalam jaringan Anda (10.0.0.0/8) atau host apa pun yang dapat dijangkau melalui gateway (atau). Tetapi memiliki dua gateway untuk jaringan yang sama tidak mungkin.

mailq
sumber
1
Maksud saya 10.1.1.1/24 sebagai singkatan untuk 10.1.1.1 pada subnet 10.1.1.0/24. Maaf, saya tidak akan menggunakan steno itu lagi, itu jelas salah. Saya masih memiliki masalah pemantauan - Saya telah menambahkan lebih detail di atas. Saya tidak bisa menyelesaikan masalah ini tanpa meletakkan router yang lebih baik di 10.1.1.2?
Luke Schlather
2

Gunakan arping :

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

Dimana:

  • source_ip adalah IP yang ditugaskan secara lokal pada host Anda
  • target_remote_ip adalah alamat IP yang ingin Anda ping
  • gateway_mac_address adalah alamat layer 2 ether dari gateway alternatif yang ingin Anda gunakan

Atau jika Anda menggunakan beberapa bentuk Solaris, Anda dapat menggunakan:

ping -N [gateway_ip] [target_remote_ip]
bahamat
sumber
Itu terlihat menjanjikan, meskipun saya kira arping iproute2 tidak akan memotongnya ... mungkin saya hanya perlu mengganti router dengan sesuatu yang bisa saya ssh.
Luke Schlather
1
iproute2's arpingberbeda. Jika Anda menggunakan arping dari iproute2untuk melakukan arps gratis, saya akan menyarankan menggunakan send_arpdari fakegantinya. Juga, gateway harus menjadi sesuatu yang akan meneruskan paket IP.
bahamat