Маршрутизація WIFI та LAN для конкретного трафіку


12

У мене на комп'ютері macbook pro є два мережеві пристрої:

  1. WIFI (en1): використовується для загального трафіку. Підключається до ip 192.168.19. * Через DHCP
  2. LAN (en0): використовується для конкретного трафіку. Підключається до ip 192.168.2.10 як статичний IP. Не підключається до маршрутизатора, лише комутатор для прямого з'єднання маршрутизації .

У мене є 4 IP-адреси, які мені потрібно отримати доступ до локальної мережі:

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

Решта трафіку повинна йти до WIFI. Я спробував налаштувати таблицю маршрутизації для конкретних IP-адрес, але мені вдалося лише зіпсувати свою мережу. Я не заходжу надто часто у світ мереж, але це була остання команда, яку я намагався:

sudo route add -host 192.168.2.30 -interface en0

Ця команда знищила мою здатність використовувати ping. Це мені сказало, що пінг не може виділити пам'ять (це можливо навіть)? Це також знищило мій доступ до Wi-Fi. Вихід із системи та виправлення помилки виправлено. Я дійсно не проти зробити це рішення постійним, тому я добре з тимчасовою маршрутизацією.

Редагувати:

Якщо я зараз намагаюся:

sudo route flush
sudo route add default 192.168.19.1

Це змушує все працювати близько хвилини. Але після такої хвилини він «забуває» маршрутизацію до WiFi, зберігаючи маршрутизацію локальної мережі (en0). Якщо я відключу шнур живлення та відключую кабель локальної мережі (en0), процес працює ще хвилин.

EDIT 2:

Це були деякі команди, введені як запит від 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

ОС обробляє маршрутизацію, а не апаратне забезпечення.
Ігнасіо Васкес-Абрамс

Чи все 192.168.2.X в локальній мережі? Якщо це так, це робить рішення набагато простішим.
LawrenceC

@ultrasawblade Так, у цій мережі все 192.168.2. *
jakebird451

Відповіді:


11

Вам не потрібно створювати будь-які правила маршрутизації вручну для цієї конфігурації, за умови, що всі адреси 192.168.2.x, з якими ви хочете спілкуватися, розташовані вниз по інтерфейсу з адресою 192.168.2.x.

  1. Перейдіть до Налаштування системи -> Мережа
  2. Виберіть свій пристрій Ethernet, переконайтесь, що для параметра "Налаштувати IPv4" встановлено значення "Вручну", що для вашої маски підмережі встановлено значення 255.255.255.0 та чи поле маршрутизатора порожнє.

Після цього netstat -rnслід все-таки показати маршрути для обох підмереж, але лише маршрут "посилання №4" замість маршруту за замовчуванням через 192.168.2.1.

Якщо ви не хочете маршрут за замовчуванням, залиште поле роутера порожнім. Значення у вікні маршрутизатора використовується лише для встановлення маршруту за замовчуванням через цей мережевий інтерфейс, і не використовується ні для чого іншого.


Дякую! Це було все! У мене все було налаштовано належним чином, крім поля роутера. Я ввожу ip-адресу 192.168.2.1в поле маршрутизатора, щоб відповідати "маршрутизатору" на стороні lan. Я думав, що це потрібно, але зараз я бачу, що він перебрав за замовчуванням маршрут для загального трафіку.
jakebird451

Дякую за це! Була така ж проблема і працювала для мене чудово.
BaronVonKaneHoffen

4

Проблема полягає в тому, що ваш en0інтерфейс додає маршрут за замовчуванням, який має перевагу над маршрутом за замовчуванням, встановленим інтерфейсом 802.11. Я не точно впевнений, чому, але це чи той факт, що BSD віддає перевагу дротовий інтерфейс через бездротовий, або він надає перевагу статично налаштованому інтерфейсу над динамічно налаштованим. Ви можете сказати, що стовпець en0використовується за замовчуванням Refs; Refs- це показник, який вказує поточну кількість активних напрямків використання маршруту, тому ми можемо бачити, що він отримує весь трафік.

Рішення полягає в тому, щоб видалити цей маршрут, бажано назавжди, з таблиці маршрутизації, щоб трафік, призначений для хостів, окрім тих у ваших локальних мережах, проходив шлюз за замовчуванням, встановлений DHCP на en1. Перше, що я хотів би перевірити, - це на панелі конфігурації, en0щоб переконатися, що ви нічого не ввели в routerполе. Інформація в цьому полі додається як шлюз за замовчуванням. Якщо це не працює, нам потрібно видалити маршрут вручну, причина, route flushяка не працює, полягає в тому, що я вважаю, що він каже OS X перезавантажити інформацію про маршрутизацію з файлів конфігурації інтерфейсу, отже, через короткий час поверне зміни. Наступна команда повинна видалити маршрут за замовчуванням дляen0 інтерфейс, поки не буде перезапущена будь-яка мережа або система IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

Якщо ви хочете зробити цю зміну постійною, ви можете: a) створити службу, в /Library/StartupItemsякій мені здається занадто багато роботи, або b) додати цей рядок до /etc/rc.localкоманди, наприклад:

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

Можливо, вам доведеться додати sleep <number_of_seconds>команду перед цим рядком, /etc/rc.localщоб уникнути запуску команди до повного створення інтерфейсів та встановлення таблиці маршрутизації.

Сподіваюся, це допомагає і удачі!


Дякую за вашу тривалу відповідь. Проблема була за промовчанням до маршруту 192.168.2.1, але @rakslice виявив, що я помилився під час введення інформації про маршрутизацію для з'єднання en0. Я вводив ip адресу 192.168.2.1в поле маршрутизатора, вважаючи, що це було потрібно. Після видалення маршрутизатора за замовчуванням ip я також видалив неправильний маршрут за замовчуванням 192.168.2.1. Ще раз дякую за вашу допомогу.
jakebird451

1
Вигляд розбився, я не отримав щедрості: "Перше, що я перевірив би, - це на панелі конфігурації, щоб en0 переконався, що ви нічого не ввели в поле маршрутизатора. Інформація в цьому полі додається як шлюз за замовчуванням. " Але все це добре, врешті-решт, радий, що ви спрацювали.
d34dh0r53

0

Ви хочете встановити IP-адресу Wifi як шлюз за замовчуванням і видалити будь-який шлюз за замовчуванням (або маршрут до 0.0.0.0), підключений до локальної мережі або 192.168.2.0/24.

Це, звичайно, простіше, якщо ви можете встановити en1 на фіксований IP, який буде працювати з wifi.

Можливо, вам доведеться додати 192.168.2.10 як маршрут до мережі 192.168.2.0/24. Однак це повинно бути автоматичним, оскільки це може сказати, що 192.168.2.0/24 безпосередньо підключений віртуальним до того, що вам призначено для інтерфейсу.

Таким чином, трафік на будь-який 192.168.2.X буде витісняти з 192.168.2.10, а трафік, який рухається в іншому місці, виходитиме з IP-адреси вашого en1.


Я встановив своє замовлення Wi-Fi у верхній частині через налаштування мережевої системи. Але я не впевнений, як це зробити remove any default gateway connected to the LAN.
jakebird451

можливо sudo route del default 192.168.2.10?, не зовсім впевнений, як це зробити на freebsd / mac osx, але це має бути схожим.
ЛоуренсC

Команда на mac є sudo route delete default 192.168.2.10. Пінг все ще активний. Однак він припиняє доступ до трафіку wifi, виключаючи маршрутизатор ip.
jakebird451

Ви отримуєте Інтернет через Wi-Fi, правильно, тобто якщо ви не підключаєтесь через локальну мережу та лише Wi-Fi, ви можете зайти на зовнішні сайти, такі як Google тощо?
LawrenceC

Так, WiFi призначений для загального трафіку, наприклад google.com (насамперед для api google Maps)
jakebird451
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.