Назад | Перейти на главную страницу

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

На моем 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. Он сказал мне, что ping не может выделить память (возможно ли это)? Это также убило мой доступ к Wi-Fi. Выход из системы и возвращение в нее устранили проблему. Я действительно не против сделать это решение постоянным, поэтому меня устраивает временная маршрутизация.

РЕДАКТИРОВАТЬ:

Если я сейчас пытаюсь:

sudo route flush
sudo route add default 192.168.19.1

Это заставляет все работать примерно на минуту. Но по прошествии такой минуты он «забывает» маршрутизацию на WiFi, сохраняя при этом маршрутизацию LAN (en0). Если я отключу и снова подключу кабель LAN (en0), процесс будет продолжаться еще минуту.

РЕДАКТИРОВАТЬ 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, с которыми вы хотите взаимодействовать, не работают по интерфейсу с адресом 192.168.2.x.

  1. Перейдите в Системные настройки -> Сеть.
  2. Выберите устройство Ethernet, убедитесь, что для параметра «Настроить IPv4» установлено значение «Вручную», для маски подсети установлено значение 255.255.255.0 и что поле маршрутизатора пусто.

Как только это будет сделано, netstat -rn должен по-прежнему показывать маршруты для обеих подсетей, но только маршрут «ссылка №4» вместо маршрута по умолчанию через 192.168.2.1.

Если вам не нужен маршрут по умолчанию, оставьте поле маршрутизатора пустым. Значение в поле маршрутизатора используется только для установки маршрута по умолчанию через этот сетевой интерфейс и не используется ни для чего другого.

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

Решение состоит в том, чтобы удалить этот маршрут, предпочтительно навсегда, из таблицы маршрутизации, чтобы трафик, предназначенный для хостов, отличных от тех, которые находятся в ваших локальных сетях, проходил через шлюз по умолчанию, установленный DHCP на en1. Первое, что я бы проверил, это панель конфигурации для en0 убедитесь, что вы ничего не ввели в router поле. Информация в этом поле добавляется как шлюз по умолчанию. Если это не сработает, нам нужно вручную удалить маршрут, причина в том, что route flush не работает, потому что я считаю, что он сообщает OS X перезагрузить информацию о маршрутизации из файлов конфигурации интерфейса, следовательно, через короткое время отменяет ваши изменения. Следующая команда должна удалить маршрут по умолчанию для en0 до тех пор, пока не будет перезапущена сеть или система не будет IPL:

sudo route delete -net 0.0.0.0 192.168.2.1

Если вы хотите сделать это изменение постоянным, вы можете: а) создать службу в /Library/StartupItems что мне кажется слишком много работы или б) добавьте эту строку в /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 чтобы избежать запуска команды до того, как интерфейсы будут полностью задействованы и таблица маршрутизации не будет установлена.

Надеюсь, что это помогает и удачи!

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

Это, конечно, будет проще, если вы можете настроить свой en1 на фиксированный IP-адрес, который будет работать с Wi-Fi.

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

Таким образом, трафик, идущий на любой 192.168.2.X, будет выходить из 192.168.2.10, а трафик, идущий куда-либо еще, будет уходить с IP-адреса вашего en1.