OS X에서 특정 인터페이스를 통해 IP 경로를 지정하는 방법은 무엇입니까?


40

나는 Mac에 있고 wifi 연결의 특정 게이트웨이를 통해 특정 주소를 라우팅하려고합니다.

나는 사용하고있다 :

route add -host 54.81.143.201 192.168.15.1

때로는 이것이 효과가있을 수도 있고 그렇지 않을 수도 있습니다. 내가 찾은 것은 선택한 인터페이스가 매번 다르다는 것입니다. 일해야 en0

netstat -nr 작동하지 않을 때 출력 :

54.81.143.201      192.168.15.1       UGHS            1       89     en5

이것은 작동 할 때입니다. (note en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

내가 왜 이러는거야? 우리 회사에는 HipChat이 작동하지 않는 프록시가 있기 때문입니다. 그래서 나는 여전히 이더넷으로 작업하면서 개방형 Wi-Fi 네트워크를 통해 힙챗 트래픽을 라우팅하고 있습니다.

편집하다:

또한 인터페이스 만 사용하여 항목을 추가하려고했습니다.

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0

HipChat이 연결되지 않습니다.

편집 2 : 누군가 내 라우팅 테이블 전체를 요청했습니다. 여기 있습니다. 54.81.143.201은 이제 en0이 아닌 en3에 바인딩됩니다.

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.7.90.1          UGSc           31        6     en3
10.7.90/24         link#4             UCS             4        0     en3
10.7.90.1          0:23:ac:3d:db:c2   UHLWIir        16        0     en3   1200
10.7.90.44         40:6c:8f:19:4a:bb  UHLWI           0        3     en3    946
10.7.90.63         127.0.0.1          UHS             0        0     lo0
54.81.143.201      192.168.15.1       UGHS            0        0     en3
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3      209     lo0
169.254            link#4             UCS             1        0     en3
169.254.255.255    0:23:ac:3d:db:c2   UHLSW           0        0     en3

작동하지 않는 경우에 대한 전체 라우팅 테이블을 게시하십시오. en5를 통해 192.168.15.1에 연결할 수 있습니까? 그렇다면 왜 작동하지 않습니까? 그렇지 않은 경우 해당 경로가 어떻게 추가되었는지 알기가 어렵습니다.
David Schwartz

@DavidSchwartz, 그게 흥미 롭습니다. 192.168.15.1은 en5를 통해 연결할 수 없습니다. en0에 올바르게 할당되면 작동합니다.
Sean256

라우팅 테이블 또는 en5의 구성을 보여주십시오. 라우트가 이런 식으로 설치되는 이유가 있어야하며, 이것이 실제 문제 일 수 있습니다.
David Schwartz '

@DavidSchwartz 항상 en5는 아니지만 때로는 en3입니다. 지금 전체 라우팅 테이블을 게시하고 있습니다.
Sean256

보여준 라우팅 테이블에서 en3 명확하게 맞습니다. 192.168.15.1은 다른 인터페이스를 통해 연결할 수 없습니다. 해당 라우팅 테이블에서 192.168.15.1에 도달하는 유일한 방법은 기본 경로를 통하는 것입니다. (실제로, 당신은 당신이 무엇을하고 있는지 전혀 모르는 것 같습니다. 당신은 시스템이 불가능하지 않다는 것에 놀랄 것 같습니다.)
David Schwartz

답변:


34

시험:

route add -host 54.81.143.201 -interface en0

2
이것이 내가 시도 할 때 얻는 것입니다 : route : bad address : en0
Sean256

이것을 테스트 할 Mac이 없습니다. 구문이 잘못된 것 같습니다. 나는 대답을 수정했다. 다시 시도하십시오.
drk.com.ar

1
슬프게도 같은 일-> 경로 : 잘못된 주소 : en0
Sean256

다시 시도하십시오. 이번에는 게이트웨이를 제거했습니다. 또한 IP 구성과 관련된 ifconfig 출력을 질문에 추가 할 수 있습니까?
drk.com.ar

방금 시도해 보았지만 (실제로 전에도 가지고 있습니다) 내 테이블에 항목을 추가해도 문제가 해결되지 않습니다. HipChat이 연결되지 않습니다. 그런 식으로 수행 할 때 여기에서 라우팅 테이블 엔트리가 -> 54.81.143.201 78 : 31 : C1 : C7 : 52 : 74 UHS 0~2 EN0
Sean256

3

다른 사람들이 지적했듯이 이것은 실제로 3 가지 문제입니다.

  1. 무선 인터페이스가 en0, en3 및 en5 사이에서 변경되고있는 것 같습니다.

    MacBook Air에서 en0은 항상 무선입니다. Thunderbolt-to-Ethernet은 항상 en3이고 USB-to-Ethernet은 항상 en5입니다. 그러나 Mac의 다른 포트에 어댑터를 연결하면 NIC 이름이 변경됩니다. 이 문제를 먼저 해결해야합니다. 무선 이름이 항상 같은지 확인하십시오. 그렇지 않으면 고정 경로 명령을 입력 할 때 해당 en0위치에 연결된 NIC가 없으면 "주소 오류"(물리적 주소에는 링크가 없음)와 함께 명령이 실패합니다.

    마찬가지로 어댑터가 항상 동일한 SSID에 연결되어 있는지 확인하십시오. 게이트웨이 주소는 분명히 서브넷에 유효해야하며, WiFi 네트워크마다 서브넷이 다릅니다. 다른 유형의 오류가 발생할 수 있습니다.

    무선이 유일한 네트워크 연결인지 지정하지 않았습니다. 위의 것을 감안할 때, 나는 ...? VMware 또는 Parallels로 인한이 네트워킹 및 가상 네트워킹으로 인해 추가 복잡성이 발생할 수 있습니다. (예를 들어, 연결된 두 네트워크 모두 동일한 IP 공간을 사용하는 경우 ... 가상 머신은 종종 브리지되고 자체 IP / 라우트 / 링크가 있습니다 ...) 네트워크 토폴로지 게시가 도움이됩니다.

  2. 완료되면 sudo route add -host 54.81.143.201 -iface en0또는을 시도하십시오 sudo ipfw. 어댑터 이름을 모르는 경우 다음과 같이 대신 MAC 주소를 지정할 수 있습니다.sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    관련 : https://discussions.apple.com/thread/5049994?searchText=policy%20route

  3. 재부팅하면 지속되지 않을 수 있습니다. 별도로 처리해야합니다.



2

-linkMAC 주소를 지정하는 옵션을 사용하여 인터페이스에서 경로를 추가 할 수있었습니다 .

route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]

54.81.143.201적절한 인터페이스 로 트래픽을 보냅니다 .

192.168.15.*각 인터페이스에 하나씩 두 개의 개별 호스트 주소가 할당되어 있습니까? 그렇지 않으면 인터페이스 중 하나에서 트래픽을 보낼 수 있지만 패킷이있는 소스 IP에서 트래픽이 반환됩니다.


그래서 Mac addr을 사용하여 제안한 것을 시도해 보았을 것입니다. 이상하게도 라우팅 테이블에 en0이 아닌 en3에 대한 항목이 표시됩니다.-> 54.81.143.201 00 : 1d.88.4a.21.da UGHS 0 en3
Sean256

'arp -an'을 할 때 어떤 항목이 있습니까?
Nevin Williams

2

이 솔루션은 최신 MacOS 10.12 (Sierra)에서 작동합니다. 여기 요점 입니다.

#!/bin/bash

# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR=`ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*/\1/p'`
TO=`echo -n ${TOADDR//[[:space:]]}`

echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -host $1 $wifi_router -ifp $wifi_address -ifa $TO -static

echo ""
echo "ROUTE ADDED:"
route get $1

다음과 같이 사용하십시오.

> sudo ./route_wifi.sh IP_ADDRESS

wifi 인터페이스는 en1 이라고 가정합니다 .

wifi_routerwifi_address 변수 에 올바른 값을 입력하는 것을 잊지 마십시오 . 참고 wifi_address의 : 인 형식, 네트워크 인터페이스 이름 ' : ' 와 인터페이스의 MAC 주소 ' . ' 구분자 . 필요한 정보의 대부분은 ifconfig 명령 출력에서 구문 분석 될 수 있지만 그에 비해 너무 게으르다.)


수퍼 유저에 오신 것을 환영합니다. 게시물의 링크에서 가장 관련성 높은 정보를 포함 시키십시오. 자세한 내용은 여기를 참조 하십시오 .
스티로폼 비행

1

OS X route명령은 여기 에 설명되어 있습니다 . 그만큼-ifscope매개 변수와 값은 인터페이스 바인딩 경로를 지정할 수 있습니다.

그러나 이것은 당신이 원하는 것이 아닙니다. IP 범위가 고유하도록 네트워크를 수정해야합니다. 그 이외의 인터페이스 메트릭 (일명 우선 순위)은 다른 인터페이스가 동일한 옵션에서 선택되는 데 영향을줍니다.


-1

"HipChat"서비스와 관련하여 대화하려는 공급 업체 서버는 54.81.143.201입니까? 이 경우 더 큰 범위를 제공하기 위해 54.81.143.0 255.255.255.0에 대한 라우팅 항목을 작성합니다. 소프트웨어를 사용할 때이 특정 서버와 항상 대화하는 것은 아니지만 동일한 서브넷 54.81.143.0/24에있는 클러스터입니다. 또한 새 항목을 만들 때 경로 메트릭이 올바른지 확인하십시오. 54.81.143.0/24 192.168.15.1 Metric 20 En5에 대한 경로를 만들지 만 0.0.0.0/0 10.7.90.1 Metric 10 En0에 대한 경로가있는 경우 컴퓨터는 새 항목을 무시하고 기본 경로 (En0 경유)를 통해 트래픽 라우팅을 계속 선호합니다. 방금 이것을 훑어보고 그것을 지적하고 싶었습니다. 건배!


-1

NIC 이름을 추가해보십시오.

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

이것은 CentOS에서 저에게 효과적입니다.


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