Buộc một ứng dụng sử dụng giao diện mạng cụ thể


48

Tôi đang sử dụng nhiều giao diện mạng (LAN và Không dây) và tôi nhận thấy rằng có một cách để thay đổi thứ tự của các giao diện ưa thích. Làm cách nào tôi có thể sử dụng mạng có dây để thực hiện công việc, kiểm tra email, v.v (một cách an toàn) và sử dụng Vlan không dây để truy cập các nội dung khác (nếu không bị chặn bởi các cổng và đôi khi là websense)?

Câu trả lời:


22

Thủ thuật là điều chỉnh các bảng định tuyến (không phụ thuộc vào cổng đích hoặc ứng dụng nguồn, nhưng phụ thuộc vào máy chủ đích). Điều này giả định rằng bạn đang dùng Linux hoặc OS X (như các thẻ hiển thị).

Giả sử cổng mặc định của bạn là 1.2.3.4 và bạn có một vpn có thể định tuyến lưu lượng truy cập vào ngày 6.7.8.9. Nếu bạn muốn lưu lượng thư của mình định tuyến trên 6.7.8.9, chỉ cần làm

sudo route add mail.myserver.com 6.7.8.9

Một số phiên bản của tuyến đường có thể yêu cầu từ khóa "gw" giữa địa chỉ và bước nhảy tiếp theo. Nếu bạn muốn thực hiện toàn bộ tuyến đường qua bước nhảy tiếp theo, chỉ cần thêm một mặt nạ mạng trong ký hiệu CIDR cho đích, như

sudo route add 192.168.0.0/24 6.7.8.9

Nếu bạn muốn xem bảng định tuyến hiện có, hãy sử dụng

netstat -nrl
or
ip route list

Nếu bạn đang ở trên Windows, "tuyến đường mạng" sẽ giúp bạn đi gần hết, nhưng cú pháp hoàn toàn khác.


17
Đây thực sự không phải là một câu trả lời? Câu hỏi là làm thế nào để buộc một ứng dụng không phải là một trang web. Ví dụ: những gì tôi muốn Safari đi qua VPN (ppp0) nhưng Firefox sẽ vượt qua en0 bất kể họ đang truy cập trang web nào? Đó là câu hỏi.
gman

2
@gman: Không có gì về câu trả lời này là cụ thể cho các trang web.
Cuộc đua nhẹ nhàng với Monica

3
OP muốn chọn giao diện mạng dựa trên chương trình ứng dụng. Câu trả lời này cho thấy cách chọn dựa trên máy chủ đích.
Bennett McElwee

Tôi sẽ không đánh giá thấp điều này (đó là lời khuyên tốt cho một câu hỏi khác), nhưng tôi chắc chắn sẽ không nêu lên điều này (vì những lý do được nêu bởi @gman và @ bennett-mcelwee).
ratskin

Ở trên, điều này không trả lời câu hỏi làm thế nào để khóa một ứng dụng cụ thể vào một NIC cụ thể.
Catchdave

6

Nếu bạn chỉ muốn có hai NIC hoạt động cùng một lúc, bạn có thể đặt Thứ tự dịch vụ trong Tùy chọn hệ thống / Mạng bằng cách chọn thiết bị bên dưới danh sách các thiết bị mạng. Kéo và thả thứ tự bạn muốn chúng vào.

Ví dụ: tôi có Ether và WiFi luôn hoạt động trên MBP của tôi với Ether được đặt trên Wi-Fi. Vì tôi sử dụng Ether tại nơi làm việc, tôi đã thiết lập NIC đó với cài đặt proxy và không có Wi-Fi. Khi tôi về nhà, không cần phải điều chỉnh bất kỳ cài đặt nào. Bạn cũng có thể làm điều này từ thiết bị đầu cuối bằng cách sử dụng /usr/bin/networksetup -ordernetworkservices.

Nhưng để có cả hoạt động và ứng dụng sử dụng không mặc định, tôi đã gặp may mắn với một lời khuyên dễ dàng hơn một chút theo lời khuyên của @ Andor. Nếu tôi muốn một ứng dụng không sử dụng Ether trong trường hợp của mình, tôi đã đặt cài đặt proxy cho ứng dụng thành địa chỉ IP của bộ điều hợp wi-fi. Nó sẽ sử dụng giao diện đó để thoát ra và theo cách đó bỏ qua proxy và máy chủ giám sát của công ty. Vì vậy, nếu Ether có địa chỉ 1.2.3.4 và xuất hiện trước Wi-Fi (5.6.7.8) trong đơn đặt hàng dịch vụ, tôi có proxy ứng dụng của mình đến 5.6.7.8.


5

Đối với Mac, có một giải pháp đơn giản mà tôi sử dụng. Đó thực sự là một triển khai giải pháp của @ Andor. Cài đặt proxy và định cấu hình ứng dụng của bạn để sử dụng nó:

  1. Tôi đã cài đặt SquidMan

  2. Trong cấu hình thêm dòng sau. Bạn cần chỉ định ip bạn sẽ sử dụng cho các ứng dụng riêng tư của mình thay vì x.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. Bắt đầu SquidMan và định cấu hình ứng dụng của bạn để sử dụng nó làm proxy.

Tôi đã dành một giờ để tìm thông tin này trong các trang khác nhau, vì vậy tôi hy vọng nó sẽ giúp người khác thực hiện nhanh hơn.


Nên hoạt động tương tự trên Windows và dường như là giải pháp tao nhã duy nhất!
TJJ

1

Bạn có thể sẽ cần phải sử dụng các chức năng điều khiển IO cấp thấp (ioctl). Đặc biệt:

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

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

Xem trang người đàn ông này để biết thêm chi tiết.


1

Vấn đề là bạn sẽ có nhiều cổng kết nối mạng của mình và điều đó hơi khó quản lý ...

Một số công cụ unix và linux liên quan đến máy chủ hoặc mạng thường có một cờ gọi là "giao diện", nơi bạn có thể cho biết giao diện nào bạn muốn sử dụng, như trong tcpdump, ví dụ:

tcpdump -i eth0

Nhưng như tôi nghĩ bạn đang hỏi về việc định tuyến phần mềm máy tính để bàn tiêu chuẩn, điều đó sẽ khó khăn hơn một chút ...

Tôi có thể nói cho bạn một mẹo cho điều đó bằng mọi cách ... Cách khắc phục thông thường của tôi để xử lý vấn đề đó là sử dụng proxy và chỉ có một cổng. Hầu như bất kỳ phần mềm nào sử dụng Internet ngày nay đều có các tùy chọn để định cấu hình proxy, vì vậy bạn có thể thực hiện theo bất kỳ cách nào sau đây:

1.- Thiết lập proxy trên phần "không bảo mật" (ý tôi là, nơi các chính sách không được thi hành) trong mạng của bạn và trỏ phần mềm của bạn tới proxy đó.

2.- Đặt máy chủ SSH ở một nơi "không bảo mật" khác, giả sử, nhà của bạn hoặc máy chủ chuyên dụng bạn có trên internet và mở kết nối thông qua một tính năng đặc biệt mà SSH có để tạo máy chủ proxy vớ:

ssh -D 1234 user@host

Điều đó sẽ tạo trên máy tính của bạn một máy chủ proxy vớ trên cổng "1234", sẽ kết nối với "máy chủ" của bạn, sử dụng "người dùng" của bạn và truy cập Internet thông qua kết nối mà "máy chủ" của bạn có ... Sau đó, trên phần mềm cục bộ của bạn, bạn chỉ cần mở các công cụ cấu hình proxy và trỏ đến localhost: 1234.

Thủ thuật hay để tránh các chính sách internet của công ty: P

:CƯỜI MỞ MIỆNG


1

Tôi chạy các ứng dụng kinh doanh của mình bên trong một máy ảo. Tôi đã sử dụng các hướng dẫn ở trên để đặt WiFi làm kết nối ưa thích của mình, sau đó định cấu hình máy ảo để sử dụng cổng ethernet làm bộ chuyển đổi "Cầu nối".

Bất cứ thứ gì chạy bên trong máy ảo bây giờ đều được liên kết cứng với cổng ethernet. WiFi là kết nối ưa thích của tôi cho tất cả các ứng dụng khác (bên ngoài máy ảo), miễn là tôi có kết nối WiFi đi kèm.

Tôi tin rằng có các tiện ích tồn tại có thể được sử dụng để buộc sự ràng buộc của một ứng dụng với một cổng ethernet cụ thể, nhưng chưa nghiên cứu nó cho MacOS.

Phương pháp định tuyến được đề cập trước đây hơi phức tạp đối với "giáo dân", nhưng dường như cũng là một cách tiếp cận khả thi tốt, đặc biệt nếu bạn liên tục nhận được cùng một địa chỉ IP trên các kết nối của mình.


0

Mặc dù câu hỏi này dành cho OSX, tôi sẽ để lại câu hỏi sau đây hoạt động trên Windows 7 64 bit. Câu hỏi này được đưa ra như một trong những kết quả hàng đầu khi tìm kiếm các ứng dụng bắt buộc phải thông qua một bộ chuyển đổi cụ thể , vì vậy những điều sau đây có thể hữu ích cho những người khác.

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

Hướng dẫn trên sử dụng một tiện ích có tên ForceBindIp , được quảng cáo để hoạt động Windows NT/2000/XP/2003 nhưng tôi không gặp vấn đề gì khi nó hoạt động trên Windows 7 - 64 Bit.

Ngoài ra, các sự cố với ForceBindIP trên Windows 7 (x64)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.