liên kết phần mềm với các giao diện mạng khác nhau


37

Tôi có hai giao diện mạng khác nhau, kết nối với 2 mạng. Một cái là eth0 và cái kia là wlan0. Làm thế nào tôi có thể nói một phần mềm chỉ sử dụng một giao diện cụ thể?

Về cơ bản tôi muốn Firefox sử dụng eth0 vì đây là mạng lan trường đại học và tôi phải truy cập các trang mạng nội bộ, một mạng khác là mạng wifi mở ra internet và tôi muốn liên kết nó với Chrome.

Tôi đang làm việc và tôi cần sử dụng mạng nội bộ. Vì vậy, eth0 là lựa chọn của tôi nhưng eth0 là mạng nội bộ không có truy cập internet (rõ ràng). Vì tôi muốn truy cập internet nên tôi đã kết nối với wlan0 (wifi trường đại học dành cho sinh viên).

Vấn đề là nếu tôi có cả hai kết nối, đôi khi trình duyệt tìm www.stackoverflow.com bằng eth0. Vì vậy, tôi muốn chỉ định một trình duyệt chỉ sử dụng một giao diện cụ thể.


Không định tuyến một giải pháp tốt hơn cho các vấn đề của bạn?. Ý tôi là, các kết nối đến ubfox.stackexchange.com nên sử dụng cùng một giao diện từ bất kỳ chương trình nào.
Javier Rivera

Câu trả lời:


23

Bạn không thể liên kết phần mềm máy khách với các giao diện mạng cụ thể, nhưng bạn có thể nói với kernel rằng bạn chỉ muốn sử dụng một giao diện mạng cho một số địa chỉ IP và một giao diện khác cho mọi thứ khác. Điều này được gọi là "định tuyến" và có thể được cấu hình bằng cách sử dụng các lệnh /sbin/route/sbin/ip.

Nếu tôi đọc chính xác câu hỏi của bạn, bạn muốn kết nối với các địa chỉ IP mạng nội bộ bằng giao diện eth0và với Internet bằng giao diện wlan0.

Nếu bạn chạy lệnh ip route list, bạn sẽ thấy một đầu ra như sau (các số sẽ khác nhau và bạn cũng có thể có nhiều dòng hơn trong đó):

$ 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 

Hai dòng đầu tiên cho bạn biết về các mạng được kết nối với các giao diện eth0wlan0: lưu lượng mạng được hướng đến các máy tính trên các mạng đó sẽ được gửi trực tiếp đến chúng thông qua giao diện tương ứng.

Dòng cuối cùng cho bạn biết "tuyến mặc định" là gì: nếu máy tính của bạn muốn nói chuyện với máy tính trên mạng thì nó không được gắn vào (ví dụ: máy chủ stackoverflow.com), nó sẽ định tuyến lưu lượng truy cập qua eth0, truy cập lại qua máy chủ 10.60.44.1( được gọi là "cổng mặc định").

Vì vậy, để định tuyến lưu lượng truy cập Internet, wlan0bạn nên đảm bảo rằng dòng cuối cùng trong ip route listđầu ra sẽ đọc một cái gì đó như:

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

nơi A.B.C.Dlà địa chỉ IP của gateway trên mạng LAN không dây. Nếu đầu ra không chứa "dev wlan0", bạn có thể thay đổi nó bằng lệnh:

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

Bạn có thể tìm hiểu chính xác A.B.C.Dcho wlan0bằng hai cách:

  1. Nhìn vào thư mục /var/lib/dhcp3/: bạn nên tìm một số dhclient-...-wlan0.leasetập tin. Mở cái gần đây nhất và tìm kiếm một dòng có chuỗi option routertrong đó: phần còn lại của dòng cho bạn biết địa chỉ IP A.B.C.D.

  2. Hỏi quản trị viên mạng địa phương của bạn. (Có lẽ là điều tốt nhất để làm, dù sao.)

Với cấu hình này, bạn sẽ có thể:

  • duyệt Internet thông qua wlan0
  • duyệt Intranet của bạn thông qua eth0, miễn là nó nằm trên một mạng duy nhất .

Nếu mạng nội bộ của bạn trải rộng trên nhiều mạng, thì bạn sẽ cần thêm các tuyến cho chúng - và đây chắc chắn là thứ đòi hỏi bạn phải tương tác với quản trị viên mạng cục bộ. :-)


Vì tò mò: nếu tôi muốn ràng buộc dns (bao gồm tên miền phụ) thay vì địa chỉ IP thì sao?
dierre

1
@dierre Tóm lại: bạn không thể, định tuyến dựa trên địa chỉ IP. Câu chuyện dài bắt đầu bằng cách nói rằng định tuyến là một thứ 3 của lớp mạng, vì vậy nó thậm chí sẽ không biết về tên DNS, có độ phân giải xảy ra hơn nữa trong ngăn xếp giao thức mạng ...
Riccardo Murri

yeah yeah, tôi không có ý định tuyến. Tôi có ý nói chung. Nó có thể được thực hiện? Liên kết DNS với giao diện mạng?
dierre

@dierre Chính xác bạn muốn làm gì? Làm cho một máy chủ DNS chỉ trả lời trên một giao diện mạng cụ thể? Hoặc có một máy khách DNS (nghĩa là độ phân giải DNS) chỉ sử dụng một giao diện được chọn?
Riccardo Murri


2

"IP netns" tạo không gian tên mạng. Sau đó, bạn có thể tạo giao diện ảo (liên kết ip thêm ... veth) và liên kết chúng với các không gian tên.

Các không gian tên có thể được cấu hình để sử dụng các tuyến khác nhau chẳng hạn (do đó sử dụng các giao diện khác nhau)

Sau đó, bạn có thể chạy các lệnh trong không gian tên đó, sẽ sử dụng không gian tên đã tạo .. "ip netns exec NAME cmd ..."

Nguồn: http://manpages.ubfox.com/manpages/saucy/en/man8/ip-netns.8.html

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.