Маршрутизация трафика туда и обратно через сервер Mac mini с 2 сетевыми интерфейсами

2

У меня есть офисная сеть, которая выглядит следующим образом:

схема сети

Моя офисная сеть выглядит так:

  • Офисная сеть (Wi-Fi и проводная) имеет подсеть 192.168.88.0.
  • У меня есть несколько серверных машин в подсети 192.168.2.0(NODE_1, .... NODE_10).
  • У меня есть машина (это Mac mini) с 2 подсетевыми интерфейсами, которая действует как:
    • шлюз для всех машин в подсети 192.168.2.0.
    • предоставляет службу VPN (приложение по умолчанию для сервера Mac)
    • и предоставляет дополнительные услуги, такие как DNS)

Конфигурация Mac mini - моя большая проблема. Вот как это выглядит:

Интерфейс Ethernet en0

  • адрес: 192.168.88.10
  • маска подсети: 255.255.255.0
  • шлюз: 192.168.88.1

Интерфейс Ethernet en2

  • адрес: 192.168.2.1
  • маска подсети: 255.255.255.0
  • шлюз: 192.168.88.10

Мне нужно маршрутизация от машин в 192.168.88.0тех, кто в 192.168.2.0.

Для этого я активировал функцию « Общий доступ к Интернету » в Mac OS: на самом деле я не знаю, что происходит под капотом, но машины NODE_1 ... NODE_10 выходят в Интернет.

Затем, когда я подключен к офисной сети, чтобы я получил IP, такой как: 192.168.88.33я добавляю правило маршрутизации, такое как:

 sudo route -n add 192.168.2.0/24 -gateway 192.168.88.10

Пока все хорошо: все работает отлично !!!!!

Большая проблема, когда я подключаюсь через VPN.

VPN-соединение

Я успешно подключаюсь к VPN, доступному по адресу:, 192.168.88.10затем добавляю правило маршрутизации.

 sudo route -n add 192.168.2.0/24 -gateway 192.168.88.10

Я не могу добраться до машин в подсети 192.168.2.0.

Обнюхивая пакеты, я вижу, что пакеты следуют за прыжками:

  1. -> 192.168.88.10
  2. -> 192.168.2.1
  3. -> 192.168.2.110
  4. <- 192.168.2.1
  5. <- 192.168.88.1

Пакет отправляется на шлюз 192.168.88.1вместо 192.168.88.10. Изучая таблицы маршрутизации Mac mini, я вижу:

192.168.88.202     192.168.88.10      UH              2       93    ppp1
192.168.88.202     40:6c:8f:3:d5:e7   UHLS2           0        0     en0

40:6c:8f:3:d5:e7это мак адрес 192.168.88.1.

Я хотел бы изменить маршрутизацию без использования общего доступа к Интернету , чтобы разрешить доступ к Интернету 192.168.2.0и охватить как VPN, так и локальный сценарий, но я не знаю, какие шаги мне нужно сделать, и как вручную написать правила.

Большое спасибо.

JayZee
источник
1. У вас есть два шлюза по умолчанию: один, установленный для en2, неверен - это должно быть nada / ничто. 2. У вас есть двойной NAT: 1-й - это ваш ADSL-роутер, 2-й - это ваш Mac mini en1> en2 (доступ в Интернет!) 3. Можно ли настроить статический маршрут на вашем ADSL-роутере? 4. Пожалуйста, добавьте свою версию системы / сервера MacOS. 5. Как вы настроили переадресацию на своем ADSL-маршрутизаторе (чтобы VPN работал)?
klanomath
3. к сожалению нет 4. El Capitan 5. Я открыл порты для протокола L2TP и перенаправил на машину 192.168.88.10.
JayZee
Маршрутизатор по умолчанию vodafone, "революция станции Vodafone". Это должен быть Huawei hhg2500.
JayZee
где MacOs хранят таблицы ip сети и файлы конфигурации?
JayZee

Ответы:

3

Должна быть возможность создать мост с en0 и en2 и включить net.inet.ip.forwarding, чтобы избавиться от всех проблем маршрутизации. Мост действует более или менее как другой переключатель между en0 и en2.


  • Отключить общий доступ к Интернету
  • удалите шлюз в настройках en2 Mac mini и измените IP-адрес на доступный в 192.168.88.0/24 (например, 192.168.88.11)
  • удалить все дополнительные статические маршруты
  • Проверьте мостовые интерфейсы с ifconfig
  • На сервере создайте файловый мост :

    sudo mkdir -p /usr/local/bin/ #only if the folder is missing
    sudo nano /usr/local/bin/bridge
    

    с содержанием

    #!/bin/bash
    
    sysctl -w net.inet.ip.forwarding=1
    ifconfig bridge create
    ifconfig bridge0 addm en0 addm en2 up #use the first available bridge number here and the proper interface device names
    
  • войти sudo chmod +x nano /usr/local/bin/bridge
  • Создайте демон запуска usr.bridge.plist :

    sudo nano /Library/LaunchDaemons/usr.bridge.plist
    

    с содержанием

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>usr.bridge</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/sh</string>
            <string>-c</string>
            <string>/usr/local/bin/bridge</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/usr.bridge.err</string>
        <key>StandardOutPath</key>
        <string>/tmp/usr.bridge.out</string>
    </dict>
    </plist>
    
  • Загрузить список

    sudo launchctl load /Library/LaunchDaemons/usr.bridge.plist
    
  • Измените IP-адреса node_1 и node_10 на доступные в 192.168.88.0/24 (например, 192.168.88.101 и 192.168.88.110). Измените их шлюзы по умолчанию на 192.168.88.1 и DNS-сервер на 192.168.88.10.
klanomath
источник
Большое спасибо за длинный ответ! на самом деле я предпочел бы оставить 192.168.2.0 отдельно от 192.168.88.0. Будет ли это возможно с моста?
JayZee
@JayZee Это не имеет особого смысла: вы хотите получить доступ ко всему со всех устройств, но без общего доступа к Интернету / NAT. Затем вам нужно либо создать много дополнительных статических маршрутов (один маршрут потерпит неудачу, поскольку вы, очевидно, не можете добавить статические маршруты на маршрутизаторе), либо создать такой мост.
Кланомат