Laluan ditolak kerana bit hos? Cari awalan yang dimaksudkan
Baris laluan yang ditolak biasanya kerana bit hos, bukan masalah penghantaran. Tentukan awalan yang anda maksudkan dan bukan meluaskan topeng sehingga ia diterima.
Baris laluan anda kembali ditolak, dan nasihat yang anda temui menyuruh anda hidupkan penghantaran IP. Kedua-dua perkara ini berada pada peringkat masalah yang berbeza. Penghantaran menentukan sama ada hos boleh memindahkan paket antara antara muka; ia tidak mempunyai pendapat sama ada destinasi yang anda taip ialah rangkaian yang sah. Betulkan awalan dahulu, kerana penghantaran tidak akan menyelamatkan alamat dan topeng yang tidak sepadan.
Apa yang sebenarnya diadukan oleh penghurai
Destinasi yang ditulis sebagai alamat tambah topeng mesti menerangkan rangkaian, dan rangkaian bermula dengan bit hos yang disifarkan. Apabila alamat yang anda berikan masih membawa nilai di bahagian hos, pasangan itu tidak konsisten secara dalaman: 172.20.130.0 kelihatan kemas kerana berakhir dengan sifar, tetapi sifar dalam oktet keempat bukan satu-satunya perkara yang penting. Oktet ketiga ialah yang memegang bit terpesong di sini.
Alat mengendalikan ketidakselarasan itu secara berbeza. Penghurai tegas menolak baris dan menamakan bit hos. Penghurai longgar menutup alamat dengan topeng dan memasang sesuatu yang anda tidak minta, yang lebih buruk, kerana konfigurasi kini menghalakan julat yang anda tidak pernah maksudkan. Modul ipaddress Python menawarkan pilihan itu secara langsung: penghuraian rangkaian tegas menimbulkan ralat, dan strict=False menutup bit hos. Klien anda mungkin tegas, longgar atau tidak konsisten antara versi, jadi baca mesej itu dan bukan percaya pada kebiasaan.
Kerjakan contoh itu dengan tangan
Ambil terowong yang perlu mencapai 172.20.130.0 dengan topeng /20. /20 meminjam empat bit daripada oktet ketiga, jadi oktet itu hanya dikira dalam langkah 16: 0, 16, 32 dan seterusnya sehingga 240. Nilai 130 jatuh antara 128 dan 143, bermakna rangkaian yang melingkunginya bermula di 172.20.128.0, bukan di 172.20.130.0 dengan oktet terakhir disifarkan.
Ditulis, blok itu terbentang dari 172.20.128.0 hingga 172.20.143.255 dan memegang 4,096 alamat. Memberikan nilai yang sama kepada penghurai tidak tegas menunjukkan penggantian yang akan dilakukannya bagi pihak anda:
$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096Putuskan destinasi mana yang sebenarnya anda maksudkan
Baris yang ditolak biasanya menyembunyikan satu daripada tiga niat, dan hanya anda yang boleh memilih. Jika terowong memerlukan seluruh blok, tulis 172.20.128.0/20, alamat rangkaian kanonik. Jika terowong hanya memerlukan segmen 130, topeng itu salah dan 172.20.130.0/24 ialah bentuk jujurnya. Jika sasarannya satu mesin, laluan hos IPv4 ialah /32 dan tiada aritmetik topeng terlibat.
Setiap satu membenarkan jumlah trafik yang berbeza, dan itulah sebab sebenar untuk tidak meluaskan topeng sehingga aduan berhenti. /16 menerima baris itu hampir di mana-mana dan menghantar trafik ke destinasi yang anda tidak pernah mahu halakan melalui terowong. Tulis awalan paling sempit yang sepadan dengan niat, kemudian sahkan terhadap hop seterusnya yang anda jangkakan, bukan terhadap kesenyapan penghurai.
Mengapa penghantaran bukan penyelesaiannya
Laluan yang ditolak tidak pernah sampai ke laluan penghantaran, jadi menukar net.ipv4.ip_forward tidak boleh mengubah hasilnya. Tetapan itu penting kemudian, apabila hos perlu menyalurkan paket antara antara muka, dan menghidupkannya sebelum jadual betul hanya mengubah peringkat mana yang gagal seterusnya.
Dua perkara lain sering dipersalahkan pada titik yang sama. Laluan boleh diterima dan masih kalah kepada laluan yang lebih khusus, dan peraturan tembok api boleh menggugurkan trafik selepas carian yang betul. Pisahkan peringkatnya: sintaksis, pemasangan, pemilihan, penapisan. Bekerja pada peringkat yang salah terasa produktif kerana setiap perubahan memulakan semula sesuatu.
Periksa laluan yang dipasang dan jalan yang dimenanginya
Setelah klien menerima baris itu, lihat apa yang dipasangnya dan laluan mana yang dipilih kernel untuk alamat wakil di dalam blok. Jika awalan yang dipasang berbeza daripada yang anda tulis, seorang penormal bertindak bagi pihak anda.
Tanya alamat ahli serta satu di luar blok, supaya perbandingan itu bermakna dan bukan hanya satu baris yang menenangkan:
ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10Pertanyaan ketiga sepatutnya jatuh di luar terowong jika awalan anda betul, dan apabila tidak, laluan yang anda bina lebih luas daripada yang anda sangka. Catat apa yang sepatutnya diliputi oleh awalan sebelum anda menyentuh tetapan seterusnya, kerana laluan yang dihurai dan jalan yang berfungsi kekal sebagai pemerhatian yang berasingan.