Perilaku yang diinginkan
Ketika suatu aplikasi mengirim paket ke alamat IP broadcast global 255.255.255.255
, saya ingin agar paket dikirim ke alamat broadcast global Ethernet ( ff:ff:ff:ff:ff:ff
), di semua antarmuka.
Di Linux dan mungkin juga OS lain, sepertinya ini berfungsi. Windows XP dan Windows 7 menunjukkan perilaku yang berbeda tentang ini, dan tidak ada perilaku yang diinginkan untuk situasi saya.
Perilaku Windows XP
Paket akan dikirim dengan benar ke antarmuka jaringan pertama (urutan antarmuka ditentukan dalam "Koneksi Jaringan / Pengaturan Lanjutan / Lanjutan"). Itu juga akan dikirim ke antarmuka lain.
Semuanya benar sejauh ini. Masalahnya adalah, saat mengirim ke antarmuka lain, alamat sumber paket siaran adalah alamat IP dari antarmuka pertama. Misalnya, bayangkan konfigurasi jaringan ini (urutan penting):
- Adaptor 1: alamat IP
192.168.0.1
- Adaptor 2: alamat IP
10.0.0.1
- Adaptor 3: alamat IP
172.17.0.1
Sekarang jika saya mengirim paket siaran, paket-paket berikut akan dikirim (dengan alamat IP sumber dan tujuan):
- Pada adaptor 1:
192.168.0.1
=>255.255.255.255
- Pada adaptor 2:
192.168.0.1
=>255.255.255.255
Pada adaptor 3:
192.168.0.1
=>255.255.255.255
Dalam praktiknya, aplikasi yang menggunakan paket siaran tidak akan berfungsi pada antarmuka apa pun selain adaptor 1. Menurut pendapat saya, ini adalah bug mencolok dalam tumpukan TCP / IP Windows XP.
Perilaku Windows 7
Mengubah urutan antarmuka jaringan tampaknya tidak berpengaruh pada Windows 7. Sebaliknya, siaran tampaknya dikendalikan oleh tabel rute IP.
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.202.254.254 10.202.1.2 286
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 10
10.202.0.0 255.255.0.0 On-link 10.202.1.2 286
10.202.1.2 255.255.255.255 On-link 10.202.1.2 286
10.202.255.255 255.255.255.255 On-link 10.202.1.2 286
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.0.0 255.255.255.0 On-link 192.168.0.3 266
192.168.0.3 255.255.255.255 On-link 192.168.0.3 266
192.168.0.255 255.255.255.255 On-link 192.168.0.3 266
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.3 266
224.0.0.0 240.0.0.0 On-link 10.202.1.2 286
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.3 266
255.255.255.255 255.255.255.255 On-link 10.202.1.2 286
===========================================================================
Lihat 255.255.255.255
rutenya? Ya, mereka mengontrol paket siaran. Dalam situasi ini, paket siaran akan dikirim melalui 192.168.0.3
karena memiliki metrik yang lebih rendah ... tetapi tidak ke antarmuka lainnya.
Anda dapat mengubah antarmuka melalui mana paket siaran global akan dikirim dengan sangat mudah (cukup tambahkan 255.255.255.255
rute persisten dengan metrik rendah). Tetapi tidak peduli seberapa keras Anda mencoba, paket siaran hanya akan dikirim pada satu antarmuka saja, tidak semuanya ingin saya lakukan.
Kesimpulan
- Windows 7 hanya mengirim paket siaran ke satu antarmuka. Anda dapat memilih yang mana, tetapi bukan itu intinya di sini.
- Windows XP mengirim paket broadcast ke semua antarmuka, tetapi hanya mengirimkannya seperti yang diharapkan ke satu antarmuka, yang dalam praktiknya setara dengan perilaku Windows 7.
Target
Saya ingin mengubah dukungan siaran IP global ini di Windows (sebaiknya Windows 7) sekali dan untuk semua. Tentu saja cara yang lebih baik adalah memiliki semacam perubahan konfigurasi yang didukung (peretasan registri atau serupa), tapi saya terbuka untuk semua saran.
Ada ide?