powiązać oprogramowanie z różnymi interfejsami sieciowymi


37

Mam dwa różne interfejsy sieciowe, podłączone do 2 sieci. Jeden to eth0, a drugi to wlan0. Jak mogę powiedzieć oprogramowaniu, aby używało tylko określonego interfejsu?

Zasadniczo chcę, aby Firefox używał eth0, ponieważ jest to uniwersytecka sieć LAN i muszę przejść do stron intranetowych, druga to sieć Wi-Fi otwarta na Internet i chcę powiązać ją z Chrome.

Pracuję i muszę korzystać z intranetu. Więc eth0 jest moim wyborem, ale eth0 to intranet bez dostępu do Internetu (oczywiście). Ponieważ chcę mieć dostęp do Internetu, jestem podłączony do wlan0 (uniwersyteckie Wi-Fi dla studentów).

Problem polega na tym, że gdy czasami mam połączenie, przeglądarka szuka strony www.stackoverflow.com przy użyciu eth0. Chciałem więc przypisać przeglądarkę do korzystania tylko z określonego interfejsu.


Czy rutowanie nie jest lepszym rozwiązaniem dla Twoich problemów ?. Mam na myśli, że połączenia z ubuntu.stackexchange.com powinny korzystać z tego samego interfejsu z dowolnego programu.
— Javier Rivera

Odpowiedzi:


23

Nie możesz powiązać oprogramowania klienckiego z określonymi interfejsami sieciowymi, ale możesz powiedzieć jądrze, że chcesz używać tylko jednego interfejsu sieciowego dla niektórych adresów IP, a drugiego dla wszystkich innych. Nazywa się to „routingiem” i można je skonfigurować za pomocą poleceń /sbin/routei /sbin/ip.

Jeśli poprawnie odczytam twoje pytanie, chcesz połączyć się z intranetowymi adresami IP za pomocą interfejsu eth0oraz z Internetem za pomocą interfejsu wlan0.

Jeśli uruchomisz polecenie ip route list, powinieneś zobaczyć wynik podobny do następującego (liczby będą różne, a także możesz mieć w nim więcej wierszy):

$ 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 

Pierwsze dwie linie powiedzieć o sieciach podłączonych do interfejsów eth0oraz wlan0: ruch w sieci skierowanych do komputerów na tych sieci będą wysyłane bezpośrednio do nich za pośrednictwem odpowiedniego interfejsu.

Ostatnia linia mówi ci, jaka jest „domyślna trasa”: jeśli twój komputer chce rozmawiać z komputerem w sieci, do której nie jest podłączony (np. Serwer stackoverflow.com), przekieruje ruch przez eth0, realizując przez host 10.60.44.1( nazywany „bramą domyślną”).

Aby więc przekierować ruch internetowy wlan0, należy upewnić się, że ostatni wiersz w danych ip route listwyjściowych brzmi:

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

gdzie A.B.C.Djest adres IP bramy w bezprzewodowej sieci LAN. Jeśli dane wyjściowe nie zawierają „dev wlan0”, możesz to zmienić za pomocą polecenia:

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

Możesz znaleźć poprawne A.B.C.Ddla wlan0na dwa sposoby:

  1. Zajrzyj do katalogu /var/lib/dhcp3/: powinieneś znaleźć jakieś dhclient-...-wlan0.leasepliki. Otwórz najnowszą i wyszukaj wiersz z ciągiem znaków option router: reszta wiersza podaje adres IP A.B.C.D.

  2. Zapytaj lokalnych administratorów sieci. (Prawdopodobnie i tak najlepiej.)

Dzięki tej konfiguracji powinieneś być w stanie:

  • przeglądać Internet wlan0
  • przeglądaj swój intranet eth0, pod warunkiem, że znajduje się on w jednej sieci .

Jeśli twój intranet obejmuje wiele sieci, musisz dla nich dodać trasy - i jest to zdecydowanie coś, co wymaga interakcji z administratorami sieci lokalnej. :-)


Z ciekawości: co zrobić, jeśli chcę powiązać dns (w tym subdomeny) zamiast adresów IP?
— dierre

1
@dierre W skrócie: nie możesz, routing jest oparty na adresach IP. Długa historia zaczyna się od powiedzenia, że ​​routing jest rzeczą warstwy 3, więc nie będzie nawet wiedział o nazwach DNS, których rozwiązanie dzieje się dalej na stosie protokołów sieciowych ...
— Riccardo Murri

tak tak, nie miałem na myśli routingu. Mam na myśli ogólnie. Czy da się to zrobić? Wiązanie DNS z interfejsami sieciowymi?
— dierre

@dierre Co dokładnie chcesz zrobić? Czy odpowiedź serwera DNS dotyczy tylko określonego interfejsu sieciowego? A może klient DNS (tj. Rozpoznawanie DNS) korzysta tylko z wybranego interfejsu?
— Riccardo Murri,

1

2

„ip netns” tworzy sieciowe przestrzenie nazw. Następnie możesz utworzyć wirtualne interfejsy (ip link add ... veth) i powiązać je z przestrzeniami nazw.

Przestrzenie nazw można skonfigurować na przykład na różne trasy (w ten sposób używając różnych interfejsów)

Następnie możesz uruchamiać polecenia w tej przestrzeni nazw, która będzie korzystać z utworzonej przestrzeni nazw .. „ip netns exec NAME cmd ...”

Źródło: http://manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.