Định tuyến WIFI và LAN cho lưu lượng cụ thể


12

Tôi có hai thiết bị mạng trên macbook pro của mình:

  1. WIFI (en1): Được sử dụng cho lưu lượng chung. Kết nối với một ip 192.168.19. * Qua DHCP
  2. LAN (en0): Được sử dụng cho lưu lượng truy cập cụ thể. Kết nối với một ip 192.168.2.10 dưới dạng IP tĩnh. Không kết nối với bộ định tuyến, chỉ có một công tắc cho kết nối định tuyến trực tiếp .

Tôi có 4 địa chỉ IP tôi cần truy cập trên mạng LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

Phần còn lại của lưu lượng cần phải đi đến WIFI. Tôi đã thử thiết lập bảng định tuyến cho các địa chỉ IP cụ thể, nhưng tôi chỉ quản lý để làm rối mạng của mình. Tôi không tham gia vào thế giới mạng quá thường xuyên, nhưng đây là lệnh mới nhất tôi đã thử:

sudo route add -host 192.168.2.30 -interface en0

Lệnh này đã giết khả năng sử dụng ping của tôi. Nó nói với tôi rằng ping không thể phân bổ bộ nhớ (điều đó thậm chí có thể)? Nó cũng giết chết truy cập wifi của tôi. Đăng xuất và trở lại trong cố định vấn đề. Tôi thực sự không bận tâm để làm cho giải pháp này vĩnh viễn, vì vậy tôi ổn với một định tuyến tạm thời.

BIÊN TẬP:

Nếu tôi hiện đang cố gắng:

sudo route flush
sudo route add default 192.168.19.1

Điều này có được mọi thứ để làm việc trong khoảng một phút. Nhưng sau một phút như vậy, nó "quên" việc định tuyến sang WiFi trong khi vẫn giữ lại định tuyến của LAN (en0). Nếu tôi rút và cắm lại cáp LAN (en0), quá trình sẽ hoạt động trong một phút nữa.

EDIT 2:

Đây là một số lệnh được nhập theo yêu cầu của d34dh0r53.

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com

HĐH xử lý định tuyến chứ không phải phần cứng.
Ignacio Vazquez-Abrams

Có phải mọi thứ 192.168.2.X trên mạng LAN? Nếu có, điều đó làm cho giải pháp đơn giản hơn nhiều.
LawrenceC

@ultrasawblade Có, mọi thứ trên mạng đó là 192.168.2. *
jakebird451

Câu trả lời:


11

Bạn không cần phải tạo bất kỳ quy tắc định tuyến nào bằng tay cho cấu hình đó, miễn là tất cả các địa chỉ 192.168.2.x bạn muốn liên lạc đều nằm xuống giao diện với địa chỉ 192.168.2.x.

  1. Chuyển đến Tùy chọn hệ thống -> Mạng
  2. Chọn thiết bị Ethernet của bạn, đảm bảo "Định cấu hình IPv4" được đặt thành "Thủ công", mặt nạ mạng con của bạn được đặt thành 255.255.255.0 và hộp bộ định tuyến trống.

Khi điều này được thực hiện, netstat -rnvẫn sẽ hiển thị các tuyến đường cho cả hai mạng con, nhưng chỉ một tuyến đường "liên kết số 4" thay cho tuyến đường mặc định thông qua 192.168.2.1.

Nếu bạn không muốn một tuyến mặc định, hãy để trống hộp bộ định tuyến. Giá trị trong hộp bộ định tuyến chỉ được sử dụng để thiết lập tuyến mặc định thông qua giao diện mạng này và nó không được sử dụng cho bất kỳ điều gì khác.


Cảm ơn bạn! Điều đó là vậy đó! Tôi đã có mọi thứ được thiết lập đúng trừ trường trong bộ định tuyến. Tôi đặt địa chỉ IP 192.168.2.1trong trường bộ định tuyến để khớp với "bộ định tuyến" ở phía lan. Tôi nghĩ rằng nó là bắt buộc, nhưng tôi thấy bây giờ nó đã chiếm lấy tuyến đường mặc định cho lưu lượng chung.
jakebird451

Cảm ơn vì điều đó! Có cùng một vấn đề và làm việc cho tôi hoàn hảo.
BaronVonKaneHoffen

4

Vấn đề là en0giao diện của bạn đang thêm một tuyến mặc định đang được ưu tiên so với tuyến mặc định được thiết lập bởi giao diện 802.11. Tôi không chắc chắn tại sao, nhưng thực tế là BSD thích giao diện có dây hơn giao diện không dây hoặc thích giao diện được cấu hình tĩnh hơn giao diện được cấu hình động. Bạn có thể nói rằng en0tuyến mặc định đang được sử dụng bởi Refscột; Refslà một số liệu cho biết số lần sử dụng hoạt động hiện tại của tuyến đường, vì vậy chúng ta có thể thấy rằng nó nhận được tất cả lưu lượng truy cập.

Giải pháp là loại bỏ tuyến đường đó, tốt nhất là vĩnh viễn khỏi bảng định tuyến để lưu lượng truy cập dành cho các máy chủ khác với các mạng trên mạng cục bộ của bạn đi qua cổng mặc định được thiết lập bởi DHCP en1. Điều đầu tiên tôi sẽ kiểm tra là trong bảng cấu hình để en0đảm bảo rằng bạn chưa nhập bất cứ thứ gì vào routertrường. Thông tin trong trường đó được thêm vào như một cổng mặc định. Nếu điều đó không hiệu quả, chúng ta cần xóa tuyến theo cách thủ công, lý do route flushkhông hoạt động là tôi tin rằng nó bảo OS X tải lại thông tin định tuyến từ các tệp cấu hình giao diện, do đó sẽ hoàn nguyên thay đổi của bạn sau một thời gian ngắn. Lệnh sau sẽ xóa tuyến mặc định choen0 giao diện cho đến khi mạng được khởi động lại hoặc hệ thống được IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

Nếu bạn muốn thay đổi này vĩnh viễn, bạn có thể a) tạo một dịch vụ trong /Library/StartupItemsđó có vẻ như quá nhiều công việc với tôi hoặc b) thêm dòng đó vào /etc/rc.localbằng một lệnh như:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

Bạn có thể cần thêm một sleep <number_of_seconds>lệnh trước dòng đó /etc/rc.localđể tránh chạy lệnh trước khi các giao diện được hoàn thành và bảng định tuyến được thiết lập.

Hy vọng điều này sẽ giúp và may mắn!


Cảm ơn bạn đã phản hồi lâu dài của bạn. Tuyến đường mặc định 192.168.2.1là sự cố, nhưng @rakslice nhận thấy rằng tôi đã mắc lỗi trong khi nhập thông tin định tuyến của mình cho kết nối en0. Tôi đặt địa chỉ IP 192.168.2.1trong trường bộ định tuyến với niềm tin rằng nó là bắt buộc. Sau khi loại bỏ ip bộ định tuyến mặc định, tôi cũng loại bỏ tuyến mặc định xấu 192.168.2.1. Một lần nữa cảm ơn sự giúp đỡ của bạn.
jakebird451

1
Tôi không nhận được tiền thưởng: "Điều đầu tiên tôi sẽ kiểm tra là trong bảng cấu hình cho en0 đảm bảo rằng bạn chưa nhập bất cứ thứ gì vào trường bộ định tuyến. Thông tin trong trường đó được thêm làm cổng mặc định. " Nhưng cuối cùng tất cả đều tốt, rất vui vì bạn đã làm cho nó hoạt động.
d34dh0r53

0

Bạn muốn đặt IP Wifi của mình làm cổng mặc định và xóa mọi cổng mặc định (hoặc định tuyến đến 0.0.0.0) được kết nối với mạng LAN hoặc 192.168.2.0/24.

Điều này tất nhiên dễ dàng hơn nếu bạn có thể đặt en1 của mình thành một IP cố định sẽ hoạt động với wifi.

Bạn có thể phải thêm 192.168.2.10 làm tuyến đến mạng 192.168.2.0/24. Tuy nhiên, điều này nên được tự động vì nó có thể cho biết 192.168.2.0/24 được kết nối trực tiếp bằng ảo với những gì bạn đã gán cho giao diện.

Vì vậy, lưu lượng truy cập đến bất kỳ 192.168.2.X sẽ đi ra khỏi 192.168.2.10 và lưu lượng truy cập đi bất cứ nơi nào khác sẽ đi ra khỏi địa chỉ IP của en1 của bạn.


Tôi đặt thứ tự wifi của mình lên hàng đầu thông qua các tùy chọn sys mạng. Nhưng tôi không chắc làm thế nào để remove any default gateway connected to the LAN.
jakebird451

có lẽ sudo route del default 192.168.2.10?, không chắc chắn chính xác làm thế nào để làm điều đó trên freebsd / mac osx nhưng nó sẽ tương tự.
LawrenceC

Lệnh trên mac là sudo route delete default 192.168.2.10. Ping vẫn hoạt động. Tuy nhiên, nó tắt truy cập vào lưu lượng wifi không bao gồm ip bộ định tuyến.
jakebird451

Bạn nhận được internet thông qua wifi, chính xác, tức là nếu bạn không kết nối qua mạng LAN và chỉ có Wifi, bạn có thể truy cập các trang web bên ngoài như Google, v.v.?
LawrenceC

Có, WiFi dành cho lưu lượng truy cập chung như google.com (chủ yếu dành cho google maps api)
jakebird451
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.