Kirim paket melalui jaringan walaupun targetnya adalah host lokal

10

Di Linux jika Anda mengirim paket ke alamat salah satu antarmuka jaringannya , paket ini dirutekan secara internal, tidak pernah dikirim melalui jaringan. Itu adalah hal yang benar dalam 99,99% kasus.

Kadang-kadang, ketika menguji konfigurasi jaringan, ada baiknya mengirim paket melalui tautan lokal dari mesin itu sendiri, dengan mesin itu sendiri sebagai target. Bagaimana saya bisa melakukan ini? Setidaknya untuk tautan tipe bus seperti Ethernet, jika bukan untuk tautan titik-ke-titik. Saya hanya tertarik pada paket IP (baik IPv4 dan IPv6).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sudah mencoba pemindaian nmap?
Ruban Savvy
Apakah Anda tertarik pada paket yang secara fisik keluar ke jaringan dan dialihkan kembali? Atau apakah Anda hanya ingin itu muncul seolah-olah itu (melalui stack routing, iptables, dll)?
Patrick
@ Patrick Saya ingin keluar dan mencapai router lokal. Meskipun tinggal di tetapi melihat secara lokal seolah-olah sudah keluar juga bisa berguna dalam situasi yang berbeda.
Gilles 'SO- stop being evil'
@Gilles Apakah Anda pernah sukses dengan ini? Saat ini saya mencoba melakukan ini dengan dua adapter TAP dan beberapa kode bridging sederhana dan tidak berhasil. Perutean tampaknya benar, tetapi ARP tampaknya tidak berfungsi (paket keluar dengan src mac == dst mac). Saya bisa menjelaskan pengaturan saya jika itu akan membantu.
Jonathon Reinhart
1
@Gilles Saya belum mencoba semua ini, tapi saya bisa membayangkan mengimplementasikan router dengan cara yang tidak pernah mengirim apa pun kembali ke tempat asalnya, misalnya untuk mencegah memantul abadi antara dua router. Hanya hal yang perlu diperhatikan saat menguji jika paket keluar tetapi tidak pernah kembali.
Anthon

Jawaban:

7

Setiap adapter jaringan di linux memiliki parameter boolean sysctl accept_local( /proc/sys/net/ipv4/conf/eth0/accept_local). Coba atur ke 0 untuk semua adaptor yang terlibat (tambahan, Anda mungkin perlu memodifikasi tabel perutean Anda agar sesuai dengan pengaturan pengujian Anda).

Juga, pastikan bahwa rp_filter( /proc/sys/net/ipv4/conf/eth0/rp_filter) diaktifkan (bukan 0).

Referensi: http://code.metager.de/source/xref/linux/stable/Documentation/networking/ip-sysctl.txt

oakad
sumber