Bagaimana aplikasi (seperti Firefox) dipaksa untuk menggunakan antarmuka jaringan tertentu?

20

Saya punya dua antarmuka: eth0 dan wlan0 pada notebook.

Kasing yang mungkin digunakan:

  • eth0 memberi saya akses Internet, dan wlan0 saat ini terhubung ke router yang tidak memiliki konektivitas internet. Untuk tujuan pengembangan, saya harus terhubung ke wlan0 secara default, tetapi gunakan eth0 untuk berselancar
  • eth0 dan wlan0 keduanya terhubung ke Internet. Untuk aplikasi torrent, eth0 harus digunakan untuk kecepatan, tetapi untuk portabilitas notebook, SSH harus memiliki koneksi lebih dari wlan0
  • eth0 adalah koneksi kabel, wlan0 adalah nirkabel. Data yang masuk akal harus ditransfer melalui eth0, tetapi lalu lintas lainnya juga dapat melewati wlan0.

Apakah ada cara untuk memaksa aplikasi (suka nc.traditionalatau firefox) menggunakan antarmuka jaringan tertentu? Pembungkus suka example-wrapper eth0 programjuga baik jika program tersebut ada. Akan lebih baik jika bisa dikonfigurasi dalam Firefox (di runtime). Saya ingin menghindari solusi IPTables jika memungkinkan.

Lekensteyn
sumber
4
ini juga berguna untuk koneksi internet ganda dengan satu melakukan torrent sementara yang lain digunakan untuk berselancar.
iamgopal
Anda ingin menggunakan rute berbeda berdasarkan protokol / aplikasi, Anda perlu iptables untuk itu.
João Pinto
1
Saya tidak tahu bagaimana Anda bisa melakukan ini tanpa sesuatu yang memetakan lalu lintas layer7 (aplikasi) Anda ke port tertentu atau menyaring berdasarkan beberapa info aplikasi tingkat yang lebih tinggi (yang akan memerlukan inspeksi lalu lintas). Jadi, sementara iptables secara khusus tidak diperlukan, solusi apa pun yang melibatkan pembungkus harus berinteraksi dengan kebijakan tcp atau ip dengan cara tertentu. Saya tidak tahu bagaimana melakukan ini tanpa jaringan layer2 atau layer3 yang mengarahkan lalu lintas di tempat lain.
belacqua

Jawaban:

1

Apa yang Anda cari adalah LS_PRELOAD shim, lihat entri blog Daniel Lange untuk penjelasan terperinci dan kode contoh.

Bob Lebin
sumber
3
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Stormvirux
1

Anda dapat menggunakan pendekatan penandaan koneksi dan kebijakan rute yang lebih kompleks.
Ini akan berfungsi dengan baik jika Anda memiliki pengguna yang menjalankan satu perangkat lunak dan anther.
Dengan cara ini Anda dapat menandai koneksi satu pengguna dan menggunakan tabel routing khusus untuk itu sementara yang lain akan menggunakan yang default.
Dokumen dasar untuk memahami semuanya ada di: http://www.lartc.org/lartc.html
Juga contoh untuk dua koneksi yang bisa Anda lihat di sini: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interfaces
Anda dapat menggunakan modul iptables "owner" yang akan menandai koneksi untuk memungkinkan kebijakan perutean.

elico
sumber
Perutean kebijakan berfungsi untuk pengguna yang berbeda, tetapi tidak untuk aplikasi yang berjalan di bawah satu pengguna (seperti yang dijelaskan dalam OP). LD_PRELOADsepertinya cara untuk pergi (bukan untuk program jahat / untuk alasan keamanan), mungkin seseorang dapat menguraikan posting Bob Lebins?
Lekensteyn
0

Berikut adalah contoh solusi. Ini menggunakan server SOCKS, pengaturan pada mesin saat ini untuk rute coneections. Setiap aplikasi harus dikonfigurasi untuk menggunakan setiap server.

Vadim Rutkovsky
sumber
3
Ini terlihat seperti proksi HTTP, apakah ini berfungsi dengan protokol lain, seperti koneksi antara dua instance netcat?
Lekensteyn
0

Anda juga dapat menggunakan mesin workstation VMware untuk berbagi antarmuka jaringan yang berbeda yang saya unduh banyak dari satu antarmuka dan meninggalkan yang lain untuk Netflix saya.

Anda perlu melakukan setup ethX dan wlanX di VMware tetapi begitu Anda selesai mengkonfigurasi, Anda siap untuk mengunduh atau menelusuri.

Cukup mulus. Anda juga dapat menggunakan firewall untuk menghubungkan antarmuka yang juga berfungsi dengan baik.

mual
sumber
Meskipun berfungsi untuk aplikasi khusus ini, sayangnya tidak dapat digunakan dengan aplikasi lain di luar VM seperti Firefox.
Lekensteyn