Làm cách nào để định tuyến IP thông qua giao diện cụ thể trong OS X?


40

Tôi đang sử dụng máy Mac và đang cố định tuyến một địa chỉ cụ thể qua một cổng cụ thể trên kết nối wifi của mình.

Tôi đang sử dụng:

route add -host 54.81.143.201 192.168.15.1

Đôi khi điều này sẽ làm việc, lần khác nó sẽ không. Những gì tôi tìm thấy là giao diện mà nó chọn là khác nhau mỗi lần. Nó cần en0phải làm việc

netstat -nr đầu ra khi nó không hoạt động:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

Đây là khi nó hoạt động: (lưu ý en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

Tại sao tôi làm điều này? Bởi vì công ty chúng tôi có một proxy mà HipChat không hoạt động. Vì vậy, tôi đang định tuyến lưu lượng hipchat thông qua mạng wifi mở trong khi vẫn đang sử dụng ethernet.

CHỈNH SỬA:

Tôi cũng đã thử thêm mục nhập chỉ bằng giao diện

route add -host 54.81.143.201 -interface en0

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

HipChat không kết nối được.

EDIT 2: Có người hỏi toàn bộ bảng định tuyến của tôi, đây là ngày hôm nay. Lưu ý rằng 54.81.143.201 hiện bị ràng buộc với en3 chứ không phải en0

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

Đăng bảng định tuyến đầy đủ cho trường hợp nó không hoạt động. 192.168.15.1 có thể truy cập qua en5 không? Nếu vậy, tại sao nó không hoạt động? Nếu không, thật khó để xem tuyến đường đó đã được thêm vào như thế nào.
David Schwartz

@DavidSchwartz, đó là điều thú vị đối với tôi. 192.168.15.1 không thể truy cập thông qua en5. Điều này hoạt động khi nó được gán chính xác cho en0.
Sean256

Chỉ cho chúng tôi bảng định tuyến hoặc cấu hình của en5. Phải có một số lý do tuyến đường được cài đặt theo cách đó, và đó có lẽ là vấn đề thực sự.
David Schwartz

@DavidSchwartz Không phải lúc nào cũng là en5, đôi khi là en3. Tôi đang đăng toàn bộ bảng định tuyến của tôi bây giờ.
Sean256

Trong bảng định tuyến bạn đã hiển thị, en3rõ ràng là chính xác. 192.168.15.1 không thể truy cập thông qua bất kỳ giao diện nào khác. Cách duy nhất để đạt 192.168.15.1 trong bảng định tuyến đó là thông qua tuyến đường mặc định, phải không? (Nói một cách thẳng thắn, có vẻ như bạn không biết mình đang làm gì. Bạn có vẻ ngạc nhiên khi hệ thống không làm được điều không thể.)
David Schwartz

Câu trả lời:


34

Thử:

route add -host 54.81.143.201 -interface en0

2
Đây là những gì tôi nhận được khi tôi thử: tuyến đường: địa chỉ xấu: en0
Sean256

Xin lỗi tôi không có máy Mac để kiểm tra cái này. Có vẻ như cú pháp đã sai. Tôi sửa đổi câu trả lời. Vui lòng thử lại.
drk.com

1
điều tương tự đáng buồn -> tuyến đường: địa chỉ xấu: en0
Sean256

Thử lại. Lần này tôi gỡ cổng. Ngoài ra, bạn có thể thêm đầu ra ifconfig vào câu hỏi của mình để xem cấu hình IP có liên quan không?
drk.com

Tôi mới thử điều đó (Thật ra tôi cũng có trước đây) và nó thêm một mục vào bảng của tôi, nó không giải quyết được vấn đề. HipChat không kết nối được. Đây là mục trong bảng định tuyến khi thực hiện theo cách đó -> 54.81.143.201 78: 31: c1: c7: 52: 74 UHS 0 2 en0
Sean256

3

Như những người khác chỉ ra, đây thực sự là 3 vấn đề.

  1. Giao diện không dây của bạn dường như đang thay đổi giữa en0, en3 và en5.

    Trên MacBook Air của tôi, en0 luôn không dây; Thunderbolt-to-Ethernet luôn là en3 và USB-to-Ethernet luôn là en5. Nhưng nếu bạn cắm một bộ chuyển đổi sang một cổng khác trên máy Mac, thì tên NIC của nó sẽ thay đổi. Bạn cần phải giải quyết điều này trước. Hãy chắc chắn rằng không dây của bạn luôn có cùng tên. Mặt khác, khi bạn nhập lệnh tuyến tĩnh, nếu không có Nic cắm vào en0vị trí, lệnh (rõ ràng) sẽ thất bại với "lỗi địa chỉ" (địa chỉ vật lý không có liên kết).

    Tương tự, đảm bảo bộ điều hợp luôn kết nối với cùng SSID. Địa chỉ cổng rõ ràng phải hợp lệ cho mạng con và các mạng WiFi khác nhau sẽ có các mạng con khác nhau. Điều này có thể gây ra một loại lỗi khác.

    Bạn đã không chỉ định nếu không dây là kết nối mạng duy nhất của bạn. Đưa ra những điều trên, tôi đoán là không ...? Mạng này và mạng ảo do VMware hoặc Parallels có thể gây ra sự phức tạp bổ sung. (Ví dụ: nếu cả hai mạng được kết nối sử dụng cùng một không gian IP ... Các máy ảo thường được bắc cầu và có IP / tuyến / liên kết riêng ...) Cấu trúc liên kết mạng đăng sẽ giúp ích.

  2. Khi đã xong, hãy thử sudo route add -host 54.81.143.201 -iface en0hoặc sudo ipfw. Nếu bạn không chắc chắn về tên của bộ điều hợp, bạn có thể chỉ định địa chỉ MAC của nó thay vào đó, như sau:sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    Liên quan: https://discussions.apple.com/thread/5049994?searchText=policy%20route

  3. Nếu bạn khởi động lại, điều này có thể không tồn tại. Bạn sẽ cần phải xử lý riêng điều đó.



2

Tôi đã có thể thêm một tuyến đường qua một giao diện bằng cách sử dụng -linktùy chọn để chỉ định địa chỉ MAC.

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

Điều đó sẽ gửi lưu lượng cho 54.81.143.201giao diện thích hợp.

Bạn có hai 192.168.15.*địa chỉ máy chủ riêng biệt được gán, một cho mỗi giao diện, phải không? Khác, bạn có thể gửi lưu lượng ra khỏi một trong hai giao diện, nhưng lưu lượng sẽ trả về bất kỳ IP nguồn nào mà các gói có.


Vì vậy, tôi đã thử những gì bạn đề xuất bằng cách sử dụng mac addr và thật kỳ lạ, bảng định tuyến của tôi hiển thị một mục nhập cho en3 chứ không phải en0 -> 54.81.143.201 00: 1d.88.4a.21.da UGHS 0 0 en3
Sean256

Khi bạn thực hiện 'arp -an', bạn có mục nào ...?
Nevin Williams

2

Giải pháp này hoạt động trên MacOS 10.12 mới nhất (Sierra). Đây là Gist .

#!/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

Sử dụng như thế này:

> sudo ./route_wifi.sh IP_ADDRESS

Nó giả định rằng giao diện wifi là: en1 .

Đừng quên đặt các giá trị chính xác cho wifi_routerwifi_address biến. Lưu ý định dạng wifi_address , đó là: tên giao diện mạng ' : ' địa chỉ mac giao diện với ' . ' phân định . Chắc chắn rằng hầu hết các thông tin cần thiết có thể được phân tách ra khỏi đầu ra lệnh ifconfig , nhưng tôi quá lười cho việc đó =)


Chào mừng đến với Superuser. Hãy cố gắng để chứa hầu hết các thông tin có liên quan từ các liên kết trong bài viết của bạn. Đọc thêm về nó ở đây .
xốp bay

1

Lệnh OS X routeđược ghi lại ở đây . Các -ifscopetham số và giá trị của nó cho phép bạn chỉ định một lộ trình giao diện-bound.

Đây là, tuy nhiên, không phải những gì bạn muốn. Bạn cần sửa các mạng của mình để dải IP của chúng là duy nhất. Ngoài ra, số liệu giao diện (còn gọi là ưu tiên) ảnh hưởng đến giao diện nào được chọn từ tùy chọn cơ hội tương đương.


-1

Vì vậy, máy chủ của nhà cung cấp mà bạn đang cố gắng nói chuyện về dịch vụ "HipChat" mà bạn yêu cầu là 54.81.143.201? Trong trường hợp này, tôi sẽ tạo một mục định tuyến cho 54.81.143.0 255.255.255.0 để cung cấp cho phạm vi lớn hơn. Có thể khi sử dụng phần mềm, bạn không phải lúc nào cũng nói chuyện với máy chủ cụ thể này, nhưng một cụm trong số chúng trên cùng một mạng con 54.81.143.0/24. Ngoài ra, ngoài ra, hãy đảm bảo số liệu tuyến đường của bạn là chính xác khi tạo một mục mới. Nếu bạn tạo tuyến đường đến 54.81.143.0/24 192.168.15.1 Số liệu 20 En5, nhưng cũng có tuyến đường đến 0.0.0.0/0 10.7.90.1 Số liệu 10 En0. Máy tính sẽ bỏ qua mục nhập mới của bạn và tiếp tục định tuyến lưu lượng truy cập thông qua tuyến đường mặc định (thông qua En0) vì nó thích hợp hơn. Tôi chỉ lướt qua điều này và muốn chỉ ra điều đó. Chúc mừng!


-1

Bạn nên thử thêm tên NIC:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

Điều này làm việc cho tôi trong CentOS.


Tôi nhận được điều này -> tuyến đường: địa chỉ xấu: dev
Sean256
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.