소프트웨어를 다른 네트워크 인터페이스에 바인딩


37

두 개의 네트워크에 연결된 두 개의 다른 네트워크 인터페이스가 있습니다. 하나는 eth0이고 다른 하나는 wlan0입니다. 소프트웨어가 특정 인터페이스 만 사용하도록하려면 어떻게해야합니까?

기본적으로 Firefox는 대학 LAN 네트워크이므로 인트라넷 사이트로 이동해야하기 때문에 eth0을 사용하고 싶습니다. 다른 하나는 인터넷에 열려있는 Wi-Fi 네트워크이며 Chrome에 바인딩하고 싶습니다.

일하고 있는데 인트라넷을 사용해야합니다. eth0이 제 선택이지만 eth0은 인터넷에 액세스 할 수없는 인트라넷입니다 (분명히). 인터넷에 접속하기를 원하기 때문에 wlan0 (학생용 WiFi)에 연결되어 있습니다.

문제는 내가 둘 다 연결하면 때로는 브라우저가 eth0을 사용하여 www.stackoverflow.com을 찾습니다. 그래서 특정 인터페이스 만 사용하도록 브라우저를 할당하고 싶었습니다.


라우팅이 문제에 대한 더 나은 솔루션이 아닙니까? ubuntu.stackexchange.com에 대한 연결은 모든 프로그램에서 동일한 인터페이스를 사용해야합니다.
Javier Rivera

답변:


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무선 LAN에있는 게이트웨이의 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, 그것이 하나의 네트워크에 제공 .

인트라넷이 여러 네트워크에 걸쳐있는 경우이를위한 경로를 추가해야합니다. 이는 로컬 네트워크 관리자와 상호 작용해야합니다. :-)


호기심에서 IP 주소 대신 DNS를 (하위 도메인 포함) 바인딩하려면 어떻게해야합니까?
dierre

1
@dierre 간단히 말해, 라우팅은 IP 주소를 기반으로하지 않습니다. 그것도 누구의 해상도 네트워킹 프로토콜 스택까지 추가로 발생, DNS 이름에 대해 알고하지 않도록 긴 이야기가 라우팅을 말하는 것으로 시작하는 것은 ..., 네트워크 계층 3 일
리카르도 Murri 지역

그래, 난 라우팅을 의미하지 않았다. 나는 일반적으로 의미합니다. 할 수 있습니까? 네트워크 인터페이스에 DNS를 바인딩 하시겠습니까?
dierre

@dierre 정확히 무엇을 하시겠습니까? DNS 서버가 특정 네트워크 인터페이스에서만 응답합니까? 아니면 DNS 클라이언트 (즉, DNS 확인)가 선택된 인터페이스 만 사용합니까?
Riccardo Murri


2

"ip netns"는 네트워크 네임 스페이스를 만듭니다. 그런 다음 가상 인터페이스 (ip link add ... veth)를 만들어 네임 스페이스에 연결할 수 있습니다.

네임 스페이스는 예를 들어 다른 경로를 사용하도록 구성 할 수 있습니다 (따라서 다른 인터페이스 사용)

그런 다음 생성 된 네임 스페이스를 사용하는 해당 네임 스페이스에서 명령을 실행할 수 있습니다. "ip netns exec NAME cmd ..."

출처 : http://manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.