ikat perangkat lunak ke antarmuka jaringan yang berbeda

37

Saya memiliki dua antarmuka jaringan yang berbeda, terhubung ke 2 jaringan. Satu adalah eth0 dan yang lainnya wlan0. Bagaimana saya bisa memberi tahu perangkat lunak untuk hanya menggunakan antarmuka tertentu?

Pada dasarnya saya ingin Firefox menggunakan eth0 karena itu adalah jaringan universitas dan saya harus pergi ke situs intranet, yang lain adalah jaringan wifi terbuka ke internet dan saya ingin mengikatnya ke Chrome.

Saya bekerja dan saya perlu menggunakan intranet. Jadi eth0 adalah pilihan saya tetapi eth0 adalah intranet tanpa akses internet (jelas). Karena saya ingin akses internet saya terhubung ke wlan0 (wifi universitas untuk siswa).

Masalahnya adalah jika saya memiliki keduanya terhubung kadang-kadang browser mencari www.stackoverflow.com menggunakan eth0. Jadi saya ingin menetapkan browser untuk hanya menggunakan antarmuka tertentu.

dierre
sumber
Bukankah routing solusi yang lebih baik untuk masalah Anda? Maksud saya, koneksi ke ubuntu.stackexchange.com harus menggunakan antarmuka yang sama dari program apa pun.
Javier Rivera

Jawaban:

23

Anda tidak dapat mengikat perangkat lunak klien ke antarmuka jaringan tertentu, tetapi Anda dapat memberi tahu kernel bahwa Anda hanya ingin menggunakan satu antarmuka jaringan untuk beberapa alamat IP dan yang lainnya untuk yang lainnya. Ini disebut "routing", dan dapat dikonfigurasi menggunakan perintah /sbin/routedan /sbin/ip.

Jika saya membaca pertanyaan Anda dengan benar, Anda ingin terhubung ke alamat IP intranet menggunakan antarmuka eth0dan ke Internet menggunakan antarmuka wlan0.

Jika Anda menjalankan perintah ip route list, Anda akan melihat output seperti berikut (angka akan berbeda, dan Anda juga dapat memiliki lebih banyak baris di dalamnya):

$ ip route list
10.60.44.0/25 dev eth0  proto kernel  scope link  src 10.60.44.39  metric 1 
192.168.80.0/21 dev wlan0  proto kernel  scope link  src 192.168.84.122  metric 2 
[...]
default via 10.60.44.1 dev eth0  proto static 

Dua baris pertama memberi tahu Anda tentang jaringan yang terhubung ke antarmuka eth0dan wlan0: lalu lintas jaringan yang diarahkan ke komputer di jaringan tersebut akan langsung dikirim kepada mereka melalui antarmuka yang sesuai.

Baris terakhir memberi tahu Anda apa "rute default" itu: jika komputer Anda ingin berbicara dengan komputer di jaringan, ia tidak dilampirkan ke (misalnya, server stackoverflow.com), itu akan merutekan lalu lintas melalui eth0, realying melalui host 10.60.44.1( disebut "gateway default").

Jadi, untuk merutekan lalu lintas Internet melalui wlan0Anda, Anda harus memastikan bahwa baris terakhir dalam ip route listoutput berbunyi seperti:

default via A.B.C.D dev wlan0 proto static

di mana A.B.C.Dalamat IP gateway pada LAN nirkabel. Jika output tidak mengandung "dev wlan0", Anda dapat mengubahnya dengan perintah:

sudo ip route change to default dev wlan0 via A.B.C.D

Anda dapat menemukan yang benar A.B.C.Duntuk wlan0dalam dua cara:

  1. Lihat ke direktori /var/lib/dhcp3/: Anda harus menemukan beberapa dhclient-...-wlan0.leasefile. Buka yang terbaru dan cari baris dengan string option routerdi dalamnya: sisa baris memberi tahu Anda alamat IP A.B.C.D.

  2. Tanyakan kepada administrator jaringan lokal Anda. (Lagi pula, mungkin hal terbaik yang harus dilakukan.)

Dengan konfigurasi ini, Anda harus dapat:

  • jelajahi Internet melalui wlan0
  • telusuri Intranet Anda eth0, asalkan di satu jaringan .

Jika intranet Anda menjangkau beberapa jaringan, maka Anda perlu menambahkan rute untuknya - dan ini jelas merupakan sesuatu yang mengharuskan Anda untuk berinteraksi dengan admin jaringan lokal. :-)

Riccardo Murri
sumber
Hanya ingin tahu: bagaimana jika saya ingin mengikat dns (untuk memasukkan subdomain) daripada alamat IP?
dierre
1
@dierre Singkatnya: Anda tidak bisa, perutean didasarkan pada alamat IP. Ceritanya yang panjang dimulai dengan mengatakan bahwa perutean adalah hal lapisan jaringan 3, sehingga tidak akan tahu tentang nama DNS, yang resolusinya terjadi lebih jauh dari tumpukan protokol jaringan ...
Riccardo Murri
yeah yeah, saya tidak bermaksud dengan routing. Maksud saya secara umum. Bisakah itu dilakukan? Mengikat DNS ke antarmuka jaringan?
dierre
@ierre Apa sebenarnya yang ingin Anda lakukan? Membuat jawaban server DNS hanya pada antarmuka jaringan tertentu? Atau memiliki klien DNS (yaitu, resolusi DNS) hanya menggunakan antarmuka yang dipilih?
Riccardo Murri
1
@Riccardo Murri: ubuntu.stackexchange.com/questions/4988/... et voila
Dierre
2

"ip netns" menciptakan ruang nama jaringan. Anda kemudian dapat membuat antarmuka virtual (ip link add ... veth) dan kaitkan dengan namespace.

Namespaces dapat dikonfigurasi untuk menggunakan rute yang berbeda misalnya (dengan menggunakan antarmuka yang berbeda)

Kemudian Anda dapat menjalankan perintah di namespace itu, yang akan menggunakan namespace yang dibuat .. "ip netns exec NAME cmd ..."

Sumber: http://manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

olivervbk
sumber