привязывает программное обеспечение к различным сетевым интерфейсам

36

У меня есть два разных сетевых интерфейса, подключенных к двум сетям. Один из них - eth0, а другой - wlan0. Как я могу сказать, что программное обеспечение использует только определенный интерфейс?

В принципе, я хочу, чтобы Firefox использовал eth0, потому что это университетская сеть LAN, и мне нужно идти на сайты интрасети, другая - сеть Wi-Fi, открытая для Интернета, и я хочу связать ее с Chrome.

Я работаю, и мне нужно использовать интрасеть. Поэтому eth0 - мой выбор, но eth0 - это интранет без доступа в Интернет (очевидно). Поскольку я хочу доступ в Интернет, я подключен к wlan0 (университетский WiFi для студентов).

Проблема в том, что, если у меня есть оба соединения, иногда браузер ищет www.stackoverflow.com, используя eth0. Поэтому я хотел назначить браузеру использовать только определенный интерфейс.     

задан dierre 28.09.2010 в 22:00
источник

2 ответа

23

Вы не можете привязать клиентское программное обеспечение к определенным сетевым интерфейсам, но вы можете сказать ядру, что хотите использовать только одну сеть интерфейс для некоторых IP-адресов, а другой для всего остального. Это называется «маршрутизация», и его можно настроить с помощью команд /sbin/route и /sbin/ip .

Если я правильно прочитал ваш вопрос, вы хотите подключиться к IP-адресу интрасети адресов с использованием интерфейса eth0 и в Интернете с использованием интерфейса wlan0 .

Если вы запустите команду ip route list , вы увидите вывод например, следующие (числа будут разными, а также вы можете в нем больше строк):

$ 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 

Первые две строки расскажут о сетях, подключенных к интерфейсы eth0 и wlan0 : сетевой трафик, предназначенный для компьютеров по этим сетям будет напрямую отправляться им через соответствующий интерфейс.

В последней строке указывается, что такое «маршрут по умолчанию»: если ваш компьютер хочет поговорить с компьютером в сети, к которому он не привязан (например, сервер stackoverflow.com), он будет маршрутизировать трафик через eth0 , через хост 10.60.44.1 (называемый «шлюз по умолчанию»).

Итак, чтобы маршрутизировать интернет-трафик wlan0 , вы должны убедиться, что последняя строка на выходе ip route list читает что-то вроде:

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

где A.B.C.D - IP-адрес шлюза в беспроводной локальной сети. Если выход не содержит «dev wlan0», вы можете изменить его с помощью Команда:

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

Вы можете найти правильный A.B.C.D для wlan0 двумя способами:

  1. Посмотрите в каталог /var/lib/dhcp3/ : вы должны найти dhclient-...-wlan0.lease файлов. Откройте самую последнюю и найдите строку со строкой option router в ней: остальные строки сообщает вам IP-адрес A.B.C.D .

  2. Обратитесь к местным администраторам сети. (Наверное, лучше всего во всяком случае.)

С помощью этой конфигурации вы сможете:

  • просматривать интернет через wlan0
  • просмотрите свою внутреннюю сеть через eth0 , , если она находится в одной сети .

Если ваша интрасеть охватывает несколько сетей, вам нужно будет добавить маршруты для них - и это определенно то, что требует от вас для взаимодействия с администраторами локальной сети. : -)

    
ответ дан Riccardo Murri 29.09.2010 в 08:56
источник
1

"ip netns" создает пространства имен. Затем вы можете создавать виртуальные интерфейсы (ip link add ... veth) и связывать их с пространствами имен.

Пространства имен могут быть настроены для использования, например, разных маршрутов (таким образом, с использованием разных интерфейсов).

Затем вы можете запускать команды в этом пространстве имен, которые будут использовать созданное пространство имен. "ip netns exec NAME cmd ..."

Источник: Ссылка

    
ответ дан olivervbk 06.05.2014 в 15:03