Memaksa aplikasi untuk menggunakan antarmuka jaringan tertentu

48

Saya menggunakan beberapa antarmuka jaringan (LAN dan Nirkabel), dan saya perhatikan bahwa ada cara untuk mengubah urutan antarmuka yang disukai. Bagaimana saya bisa menggunakan jaringan kabel untuk melakukan pekerjaan, memeriksa email, dan sebagainya (dengan aman), dan menggunakan VLAN nirkabel untuk mengakses hal-hal lain (jika tidak diblokir oleh port dan terkadang websense)?

Kami
sumber

Jawaban:

22

Caranya adalah menyesuaikan tabel routing (yang tidak tergantung pada port tujuan atau aplikasi sumber, tetapi tidak tergantung pada host tujuan). Ini mengasumsikan bahwa Anda menggunakan Linux atau OS X (seperti yang ditunjukkan oleh tag).

Katakanlah gateway default Anda adalah 1.2.3.4 dan Anda memiliki vpn yang dapat merutekan lalu lintas di 6.7.8.9. Jika Anda ingin lalu lintas surat Anda untuk rute lebih dari 6.7.8.9, lakukan saja

sudo route add mail.myserver.com 6.7.8.9

Beberapa versi rute mungkin memerlukan kata kunci "gw" antara alamat dan hop berikutnya. Jika Anda ingin membuat rute net keseluruhan untuk hop berikutnya, cukup tambahkan netmask dalam notasi CIDR untuk tujuan, seperti

sudo route add 192.168.0.0/24 6.7.8.9

Jika Anda ingin melihat tabel routing yang ada, gunakan

netstat -nrl
or
ip route list

Jika Anda menggunakan Windows, "net route" akan membuat Anda hampir sampai di sana, tetapi sintaksnya sama sekali berbeda.

Tim Hatch
sumber
17
Ini bukan jawaban, bukan? Pertanyaannya adalah bagaimana memaksa aplikasi bukan situs web. Misalnya apa yang saya inginkan Safari untuk pergi VPN (ppp0) tetapi Firefox untuk pergi en0 terlepas dari situs apa yang mereka akses? Itu pertanyaannya.
gman
2
@ gman: Tidak ada jawaban tentang ini yang khusus untuk situs web.
Lightness Races dengan Monica
3
OP ingin memilih antarmuka jaringan berdasarkan program aplikasi. Jawaban ini menunjukkan cara memilih berdasarkan host tujuan.
Bennett McElwee
Saya tidak akan membatalkan ini (itu saran yang bagus untuk pertanyaan lain), tapi saya pasti tidak akan memperbaiki ini juga (untuk alasan yang dinyatakan oleh @man dan @ bennett-mcelwee).
ratskin
Per di atas, ini tidak menjawab pertanyaan tentang bagaimana mengunci aplikasi tertentu ke NIC tertentu.
catchdave
6

Jika Anda hanya ingin memiliki dua NIC yang aktif secara bersamaan, Anda dapat mengatur Urutan Layanan di System Preferences / Network dengan memilih roda gigi di bawah daftar perangkat jaringan. Seret dan lepas urutan yang Anda inginkan.

Sebagai contoh, saya memiliki Ether dan WiFi selalu aktif di MBP saya dengan Ether ditetapkan di atas Wi-Fi. Karena saya menggunakan Ether di kantor, saya mengatur NIC dengan pengaturan proxy dan Wi-Fi saya tanpa. Ketika saya pulang, tidak perlu menyesuaikan pengaturan apa pun. Anda juga dapat melakukan ini dari terminal menggunakan /usr/bin/networksetup -ordernetworkservices.

Tetapi karena memiliki aplikasi yang aktif dan yang menggunakan non-default, saya beruntung dengan sedikit lebih mudah pada saran @ Andor. Jika saya ingin aplikasi tidak menggunakan Ether dalam kasus saya, saya mengatur pengaturan proxy untuk aplikasi ke alamat IP adaptor wi-fi saya. Ini akan menggunakan antarmuka itu untuk keluar dan dengan cara itu memotong proxy perusahaan dan server pemantauan. Jadi jika Ether memiliki alamat 1.2.3.4 dan hadir sebelum Wi-Fi (5.6.7.8) dalam urutan layanan, saya memiliki proxy aplikasi saya ke 5.6.7.8.

SaxDaddy
sumber
5

Untuk Mac, ada solusi sederhana yang saya gunakan. Ini sebenarnya merupakan implementasi dari solusi @ Andor. Pasang proxy dan konfigurasikan aplikasi Anda untuk menggunakannya:

  1. Saya menginstal SquidMan

  2. Dalam konfigurasi tambahkan baris berikut. Anda perlu menentukan ip yang akan Anda gunakan untuk aplikasi pribadi Anda, bukan x.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. Mulai SquidMan dan konfigurasikan aplikasi Anda untuk menggunakannya sebagai proxy.

Saya menghabiskan satu jam untuk menemukan informasi ini di halaman yang berbeda, jadi saya harap ini membantu orang lain untuk melakukannya lebih cepat.

matrik
sumber
Harus bekerja sama di Windows dan tampaknya menjadi satu-satunya solusi yang elegan!
TJJ
1

Anda mungkin perlu menggunakan fungsi kontrol IO tingkat rendah (ioctl). Khususnya:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

dan

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

Lihat halaman manual ini untuk lebih jelasnya.


sumber
1

Masalahnya adalah bahwa Anda akan memiliki beberapa gateway ke koneksi jaringan Anda, dan itu agak sulit untuk dikelola ...

Beberapa server atau jaringan terkait alat unix dan linux biasanya memiliki bendera yang disebut "antarmuka", di mana Anda dapat mengetahui antarmuka mana yang ingin Anda gunakan, seperti di tcpdump, misalnya:

tcpdump -i eth0

Tetapi karena saya pikir Anda bertanya tentang perutean perangkat lunak desktop standar, itu menjadi sedikit lebih sulit ...

Saya dapat memberi tahu Anda trik untuk itu ... Perbaikan saya yang biasa untuk menangani masalah itu adalah menggunakan proxy dan hanya memiliki satu gateway. Hampir semua perangkat lunak yang menggunakan Internet hari ini memiliki opsi untuk mengonfigurasi proxy, sehingga Anda dapat melakukannya dengan salah satu cara ini:

1.- Mengatur proxy pada bagian "tidak aman" (maksud saya, di mana kebijakan tidak diberlakukan) dari jaringan Anda, dan mengarahkan perangkat lunak Anda ke proxy itu.

2.- Menetapkan server SSH di tempat "tidak aman" lainnya, misalnya, rumah Anda, atau server khusus yang Anda miliki di internet, dan membuka koneksi melalui fitur khusus yang dimiliki SSH yang menciptakan server proxy kaus kaki:

ssh -D 1234 user@host

Itu akan membuat di komputer Anda server proxy kaus kaki pada port "1234", yang akan terhubung ke "host" Anda, menggunakan "pengguna" Anda, dan pergi ke Internet melalui koneksi yang "host" Anda miliki ... Kemudian, pada perangkat lunak lokal Anda, Anda hanya perlu membuka alat konfigurasi proxy, dan arahkan ke localhost: 1234.

Trik yang bagus untuk menghindari kebijakan internet perusahaan: P

: D

Andor
sumber
1

Saya menjalankan aplikasi bisnis saya di dalam mesin virtual. Saya menggunakan instruksi di atas untuk mengatur WiFi sebagai koneksi pilihan saya, kemudian mengkonfigurasi mesin virtual untuk menggunakan port ethernet sebagai adaptor "Bridged".

Apa pun yang berjalan di dalam mesin virtual sekarang terhubung ke port ethernet. WiFi adalah koneksi pilihan saya untuk semua aplikasi lain (di luar mesin virtual), selama saya memiliki koneksi WiFi terpasang.

Saya percaya ada utilitas yang dapat digunakan untuk memaksa pengikatan aplikasi ke port ethernet tertentu, tetapi belum merisetnya untuk MacOS.

Metode perutean yang disebutkan sebelumnya agak rumit untuk "orang awam", tetapi sepertinya pendekatan yang bagus juga, terutama jika Anda berulang kali mendapatkan alamat IP yang sama pada koneksi Anda.

Kaya
sumber
0

Meskipun pertanyaan ini untuk OSX, saya akan meninggalkan yang berikut di sini yang berfungsi pada Windows 7 64-bit. Pertanyaan ini muncul sebagai salah satu hasil teratas ketika googling untuk aplikasi paksa melalui adaptor tertentu , jadi yang berikut mungkin berguna bagi orang lain.

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

Panduan di atas menggunakan utilitas bernama ForceBindIp yang diiklankan untuk bekerja Windows NT/2000/XP/2003 tetapi saya tidak punya masalah untuk membuatnya berfungsi pada Windows 7 - 64 Bit.

Juga, Masalah dengan ForceBindIP pada Windows 7 (x64)

Ashutosh Jindal
sumber