Làm thế nào một ứng dụng (như Firefox) có thể bị buộc phải sử dụng một giao diện mạng nhất định?


20

Tôi có hai giao diện: eth0 và wlan0 trên một máy tính xách tay.

Các trường hợp sử dụng có thể:

  • eth0 cấp cho tôi quyền truy cập Internet và wlan0 hiện được kết nối với bộ định tuyến không có kết nối Internet. Đối với mục đích phát triển, tôi cần kết nối với wlan0 theo mặc định, nhưng sử dụng eth0 để lướt web
  • eth0 và wlan0 đều được kết nối với Internet. Đối với ứng dụng torrent, eth0 nên được sử dụng cho tốc độ, nhưng đối với tính di động của máy tính xách tay, SSH nên có kết nối qua wlan0
  • eth0 là kết nối dây, wlan0 là kết nối không dây. Dữ liệu hợp lý nên được chuyển qua eth0, nhưng lưu lượng khác cũng có thể đi qua wlan0.

Có cách nào để buộc các ứng dụng (như nc.traditionalhoặc firefox) sử dụng một giao diện mạng nhất định không? Một bao bọc như thế example-wrapper eth0 programcũng tốt nếu chương trình như vậy tồn tại. Sẽ thật tuyệt nếu nó có thể được cấu hình trong Firefox (trong thời gian chạy). Tôi muốn tránh các giải pháp IPTables nếu có thể.


4
điều này cũng hữu ích cho nhiều kết nối internet với một người đang làm torrent trong khi người khác đang sử dụng để lướt web.
iamgopal

Bạn muốn sử dụng các tuyến khác nhau dựa trên giao thức / ứng dụng, bạn sẽ cần iptables cho điều đó.
João Pinto

1
Tôi không biết làm thế nào bạn có thể làm điều này mà không cần thứ gì đó ánh xạ lưu lượng lớp 7 (ứng dụng) của bạn sang một cổng cụ thể hoặc các bộ lọc khác dựa trên một số thông tin ứng dụng cấp cao hơn (sẽ yêu cầu kiểm tra lưu lượng). Vì vậy, trong khi iptables đặc biệt không cần thiết, bất kỳ giải pháp nào liên quan đến trình bao bọc sẽ phải tương tác với chính sách tcp hoặc ip theo cách nào đó. Tôi không biết làm thế nào để làm điều này mà không cần kết nối mạng layer2 hoặc layer3 để điều hướng lưu lượng truy cập ở một nơi khác.
belacqua

Câu trả lời:


1

Những gì bạn đang tìm kiếm là một shim LS_PRELOAD, xem mục blog của Daniel Lange để được giải thích chi tiết và mã ví dụ.


3
Chào mừng bạn đến hỏi Ubuntu! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Stormvirux

1

Bạn có thể sử dụng một cách tiếp cận phức tạp hơn về đánh dấu kết nối và chính sách tuyến đường.
Nó sẽ hoạt động tốt nếu bạn có một người dùng chạy một phần mềm và bao phấn.
Bằng cách này, bạn có thể đánh dấu các kết nối của một người dùng và sử dụng bảng định tuyến cụ thể cho nó trong khi tất cả những người khác sẽ sử dụng kết nối mặc định.
Tài liệu cơ bản để hiểu tất cả là tại: http://www.lartc.org/lartc.html
Ngoài ra, một ví dụ cho hai kết nối bạn có thể xem tại đây: /unix/58635/iptables- set-mark-route-differerent-port-through-other-interface
Bạn có thể sử dụng mô-đun iptables "chủ sở hữu" sẽ đánh dấu các kết nối để cho phép chính sách định tuyến.


Định tuyến chính sách hoạt động cho những người dùng khác nhau, nhưng không phải cho một ứng dụng chạy dưới một người dùng (như được mô tả trong OP). LD_PRELOADdường như con đường để đi (không phải vì các chương trình độc hại / vì lý do bảo mật), có lẽ ai đó có thể xây dựng bài đăng của Bob Lebins?
Lekensteyn

0

Đây là một giải pháp mẫu. Nó sử dụng máy chủ SOCKS, thiết lập trên máy hiện tại để định tuyến hình nón. Mỗi ứng dụng nên được cấu hình để sử dụng mỗi máy chủ.


3
Cái này trông giống như một proxy HTTP, nó có hoạt động với các giao thức khác, giống như một kết nối giữa hai trường hợp netcat không?
Lekensteyn

0

Bạn cũng có thể sử dụng máy trạm VMware để chia sẻ các giao diện mạng khác nhau mà tôi làm rất nhiều để tải xuống từ một giao diện này và để lại giao diện khác cho Netflix của tôi.

Bạn cần phải thiết lập cả ethX và wlanX trên VMware nhưng khi bạn đã cấu hình xong, bạn đã sẵn sàng để tải xuống hoặc duyệt.

Nó khá trơn tru. Bạn cũng có thể sử dụng tường lửa để liên kết các giao diện cũng hoạt động tuyệt vời.


Mặc dù nó hoạt động cho ứng dụng cụ thể này, nhưng thật không may là nó không thể sử dụng được với các ứng dụng khác ngoài VM như Firefox.
Lekensteyn
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.