Mengapa IP pada antarmuka dummy menjawab permintaan ARP pada eth0

2

Saya telah membuka antarmuka dummy di laptop (Ubuntu 15.10) saya dengan alamat ip 10.0.3.144, netmask 255.255.255.255

Saya memiliki USB - & gt; Adaptor ethernet. Ketika dicolokkan dalam hal ini, dikonfigurasi untuk menyediakan antarmuka "eth0", yang mendapatkan alamat IP-nya melalui DHCP dalam kisaran 10.0.3.2 - 10.0.3.10 (netmask 255.255.255.0)

Saya perhatikan bahwa ketika eth0 muncul - misalnya pada 10.0.3.2, mesin lain dapat mencapai 10.0.3.144 - ini adalah perilaku yang diinginkan, tetapi Saya tidak mengerti persis MENGAPA ini terjadi. Saya tidak memiliki jenis bridging yang diatur, jadi saya akan berpikir bahwa mesin tidak akan menjawab untuk antarmuka dummy.

Saya bisa melihat permintaan arp dan balasan pada antarmuka et laptop -

tcpdump -n -i eth0 arp tcpdump: keluaran verbose ditekan, gunakan -v atau -vv untuk dekode protokol lengkap mendengarkan pada eth0, tipe tautan EN10MB (Ethernet), ukuran tangkapan 262144 byte

tcpdump -n -i eth0 arp
14:01:31.948781 ARP, Request who-has 10.0.3.144 tell 10.0.3.254, length 48
14:01:31.948842 ARP, Reply 10.0.3.144 is-at 00:23:55:9c:52:31, length 28

Perilaku ini dapat diulang jika saya menghapus entri ARP pada 10.0.3.254 (yang kebetulan merupakan router juga menjalankan Linux)

Adakah yang bisa menyarankan jika saya bisa mengandalkan perilaku ini? (dan mengapa komputer akan menjawab pada antarmuka untuk alamat IP yang tidak terikat padanya - dan terkait - akankah ini berpotensi, dalam keadaan tertentu, menambah routing dalam skenario di mana ada beberapa antarmuka pada subnet dan paket yang berbeda harus dipaksa untuk melintasi firewall?).

davidgo
sumber
1
"mengapa komputer menjawab pada antarmuka untuk alamat IP yang tidak terikat padanya" - Itu belum tentu benar pada host Linux. Alamat IP secara default adalah milik host Linux, bukan antarmuka. Cari "masalah ARP Flux".
sawdust
Terima kasih untuk ini - itulah tepatnya yang saya butuhkan. Jika Anda mempostingnya sebagai jawaban (Mungkin menghubungkan ke linux-ip.net/html/ether-arp.html atau setara), saya akan menerimanya.
davidgo

Jawaban:

1

mengapa komputer akan menjawab pada antarmuka untuk alamat IP tidak terikat padanya

Itu belum tentu benar pada host Linux.
Alamat IP secara default adalah milik host Linux, bukan antarmuka.
Lihat Linux menganggap alamat IP sebagai milik host dan bukan antarmuka

"Fitur" Linux ini kadang-kadang disebut sebagai "masalah fluks ARP", dan dijelaskan di bagian 2.1.4 dari Address Resolution Protocol (ARP)

Ada beberapa metode untuk mengubah perilaku ini di Linux. Di masa lalu saya telah menambal kernel untuk menghilangkannya. Metode lain kurang mengganggu, seperti yang disebutkan dalam LVS HOWTO .
Jika Anda tidak melakukan apa pun, maka perilaku ARP ini harus konsisten.

sawdust
sumber
0

Perangkat lain percaya bahwa 10.0.3.144 adalah bagian dari jaringan. Subnet mask 255.255.255.255 (a.k.a. / 24) menentukan ukuran jaringan dari 256 alamat. Dengan cara subnet diletakkan, subnet 256-address yang berisi 10.0.3.2-10.0.3.10 adalah subnet yang berjalan dari 10.0.3.0 hingga 10.0.3.255. Jadi, ketika perangkat lain mencoba berkomunikasi dengan 10.0.3.144, maka alamat itu tampaknya menjadi bagian dari subnet yang sama. Akibatnya, perangkat lain akan mencoba berkomunikasi menggunakan Layer 2 (ARP, Ethernet / WiFi), bukan Layer 3 (routing menggunakan IPv4 / IPv6).

Komputer yang menerima lalu lintas Layer 2 mengenali 10.0.3.144 sebagai bagian dari subnet yang digunakannya. Jadi komputer memperhatikan lalu lintas, yang ditujukan ke komputer. Mungkin di kemudian hari, komputer bahkan mungkin menyadari bahwa 10.0.3.144 adalah alamat IP yang ada di NIC lainnya. Karena Networking diimplementasikan dengan komponen perangkat lunak yang berbeda, dirancang untuk menangani satu atau lebih "lapisan" dari model OSI, sangat mungkin bahwa komponen yang mengenali 10.0.3.144 sebagai alamat IP Layer 3 tidak set instruksi / kode / pemrograman yang menentukan bahwa alamat ARP dapat diterima.

Memahami bahwa komputer biasanya tidak memiliki alamat IP di seluruh sistem. Port jaringan memiliki alamat IP. Jadi setiap kartu jaringan biasanya mendapatkan alamat IP sendiri.

Jika Anda tidak ingin kartu jaringan kedua menerima lalu lintas, Anda mungkin perlu melakukan satu atau lebih dari hal-hal ini:

  • atur alamat IP untuk menjadi bagian dari subnet yang berbeda. (Melihat Variabel Panjang Subnet Mask ("VLSM") bagan dapat membantu memvisualisasikan alamat apa yang merupakan bagian dari subnet apa. Bagan umum biasanya hanya fokus pada oktet terakhir, membuat bagan termudah untuk dipahami untuk / 24 - / 32 jaringan ( di mana 3 oktet pertama dari subnet mask IPv4 berada ("255.255.255").
  • Menonaktifkan penerusan mungkin bermanfaat. Saya pikir komputer yang berbeda dapat bertindak secara berbeda tentang apakah lalu lintas ke NIC yang berbeda, pada sistem yang sama, dianggap sebagai "penerusan". Jika penerusan diaktifkan, maka seharusnya ada lebih sedikit kejutan bahwa lalu lintas mungkin telah mencapai NIC lain.
  • Firewall mungkin berguna untuk memblokir beberapa jenis lalu lintas. (Perhatikan bahwa beberapa firewall mungkin terbatas. Misalnya, saya mengetahui bahwa di OpenBSD, klien DHCP menggunakan BPF yang tidak diblokir oleh firewall IP.)

Untuk menjawab pertanyaan lain: Menjembatani sering dapat dianggap sebagai "penerusan Layer 2". Penerusan Layer 3 juga bisa mengakibatkan lalu lintas menyeberang ke NIC lain, bahkan jika Anda tidak menggunakan bridging Layer 2.

Mengenai apakah Anda bisa mengandalkan perilaku: Saya yakin begitu. Tetapi Anda harus memahaminya, dan mengajukan pertanyaan sampai Anda melakukannya. Setelah Anda memahami bagaimana hal-hal seharusnya bekerja, Anda dapat memverifikasi apakah itu yang terjadi; jika demikian, itu seharusnya agak dapat diandalkan. Jika masih ada misteri, maka kejutan mungkin terjadi, jadi pastikan untuk terus bertanya tentang apa pun yang masih belum jelas.

TOOGAM
sumber
Terima kasih telah merespons. Saya sudah mengerti (dan setuju dengan) hampir semuanya - tetapi tidak menjawab pertanyaan saya. FWIW, saya baru saja mencoba mengubah kebijakan FORWARD pada laptop menjadi DROP - tidak ada perubahan. Saya mengerti mengapa permintaan ARP harus terlihat pada Antarmuka ethernet, tapi saya masih tidak mengerti mengapa itu bukan perilaku yang salah untuk laptop untuk BERTANGGUNG JAWAB atasnya. Membuat kebingungan (untuk semua antarmuka kecuali terkadang lo) proxy-arp tidak aktif, rp_filter aktif. Saya pikir saya telah menemukan sesuatu pada parameter "arp_filter", tetapi anehnya ini tidak membuat perbedaan pada laptop.
davidgo