Як я можу повідомити клієнтам Mac OS та iOS про маршрути VPN?


0

У моїй домашній мережі (10.0.1.0/24) у мене є пристрої Mac і iOS (інші не мають значення). Клієнти локальної мережі отримують доступ до IPv4 та IPv6 (рідний) через Airport Extreme (AEBS), підключений до кабельного модему на Comcast (у мене немає кращого вибору). Мені потрібна VPN для доступу до деяких робочих ресурсів $, і було б зручно, якби VPN "просто працював" на тому екрані, який я маю під рукою. Щоб не керувати клієнтом VPN на кожному пристрої, я запускаю OpenVPN на своєму сервері (10.0.1.252).

Після підключення до VPN сервер отримує типові статичні маршрути, і я включив переадресацію та NAT, тому трафік від $ private_lan -> <vpn_netblocks>належним чином NAT направляється вниз по тунелю VPN (tun0). Мій рекурсор DNS працює на цьому сервері і знає пересилати певні запити DNS до внутрішніх серверів DNS. Це все працює.

Останній біт - це ознайомити клієнтів з локальною мережею про VPN. Їх маршрутом за замовчуванням є AEBS (10.0.1.1). Це ідеально, оскільки AEBS та кабельний модем мають власний акумулятор, тому мережа залишається на багато годин після вимкнення живлення. Щоб клієнти LAN отримали доступ до VPN, їм потрібно дізнатися про конкретніші маршрути, доступні на сервері. У Mac OS вручну додавати статичні маршрути, як це працює:

route add 10.7.0.0/16 10.0.1.252

Питання полягає в тому, як автоматично інформувати пристрої Mac та iOS про ті маршрути, які доступні. Я не можу додавати статичні маршрути до AEBS (я був би радий, що я виявився неправильним!). Зміна маршруту IPv4 за замовчуванням на точку на сервері - це моя остання можливість.

Я спробував додати маршрути до dhcpd.conf як статичні маршрути (код опції dhcp 121), як це зафіксовано в RFC 3442 . Ось відповідні частини мого dhcpd.conf:

# options for static routes
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

subnet 10.0.1.0 netmask 255.255.255.0 {
      option rfc3442-classless-static-routes 16, 10,7, 10,0,1,252;
      option ms-classless-static-routes      16, 10,7, 10,0,1,252;
      # needed b/c this overrides option routers
      option rfc3442-classless-static-routes  0, 10,0,1,1;
      option ms-classless-static-routes       0, 10,0,1,1;
}

Параметри подаються dhcpd, але Mac OS X їх ігнорує . Є там:

  1. Якийсь інший варіант DHCP, який працює?
  2. Якщо я налаштую OSPF або RIP, це "просто працюватиме" як для пристроїв Mac, так і для iOS?
  3. Щось на зразок протоколу відкриття сусіда для IPv4?

Вказівки на документацію, яка, як відомо, працює, високо оцінюються.

Оновлення

  1. Додано dhcpd.conf, що показує мою конфігурацію
  2. Додано посилання на дискусію Apple із посиланням на відсутність підтримки для RFC 3442

Чорт, я вражений, що ти зайшов так далеко! Гарне рішення, і я дотримуюся цього, щоб побачити, куди воно йде.
SaxDaddy

Відповіді:


0

Ви не можете просто встановити шлюз за замовчуванням для ваших клієнтів локальної мережі, щоб вказати на сервер OpenVPN? Це вже маршрутизатор, який повинен знати всі правильні маршрути.

Я припускаю, що це на вашому ланці, щоб місцеві клієнти могли його отримати. Він буде знати, щоб переслати матеріали до мережі OpenVPN. Він або перенаправить інформацію на ваш маршрутизатор, або надішле перенаправлення ICMP для системи, яка намагається спілкуватися з Інтернетом.


І я цитую себе: "Зміна маршруту IPv4 за замовчуванням на точку на сервері - це моя остання можливість".
Метт Сімерсон

0

Ad.1 Я не експерт по OS X, але ви можете спробувати налаштувати DHCP-варіант 249 (ms-classless-static-route) таким чином:

option ms-classless-static-routes 24, 192, 168, 16, 192, 168, 6, 1; 
24 - mask (number of bits)
192, 168, 16 - network address
192, 168, 6, 1 - gateway

Є також варіант 33 DHCP (Один маршрут): - https://ercpe.de/blog/advanced-dhcp-options-pushing-static-routes-to-clients

Єдиний маршрут

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

Приклад:

Destination: 192.168.123.234 (Hex: C0:A8:7B:EA)
Router: 10.34.72.42 (Hex: 0A:22:48:2A)

Значення: C0: A8: 7B: EA: 0A: 22: 48: 2A

Примітка. Це конфігурація pfsense, щоб використовувати її в dhcpd, вам потрібно перетворити шістнадцяткову в десяткову.

Можливо, ви помилилися, чи можете ви показати нам конфігурацію dhcpd?

Дуже хороший опис тут: https://ercpe.de/blog/pushing-static-routes-with-isc-dhcp-server

Додавання статичних маршрутів до ваших клієнтів dhcp за допомогою pfsense було складним, оскільки вам потрібно вказати інформацію про мережу та маршрутизатор як неочищені шестигранні значення. Виконати те саме завдання із ISC DHCP-сервером простіше. Перш за все, ми повинні оголосити серверу параметр dhcp у глобальному масштабі:

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

Другий рядок призначений для клієнтів Windows, оскільки MS вирішила використовувати параметр dhcp 249 замість існуючих 121. Наступним кроком є ​​оголошення цих параметрів у нашому визначенні підмережі:

 subnet 192.168.1.0 netmask 255.255.255.0 {
     ... other options ....
     option rfc3442-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2;
     option ms-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, ;
 }

Формат опцій:

<netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>

де байти зі значенням 0 опущені. Знову ж таки, ви повинні включити маршрут за замовчуванням у параметри, оскільки клієнтам dhcp дозволено ігнорувати параметри маршрутизаторів опції xxxx. Отже, параметр рядка rfc3442-classless- статичні маршрути 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2 визначає наступну інформацію про маршрутизацію:

24, 192, 168, 123, 10, 10, 10, 1: 192.168.123.0/24 via 10.10.10.1 0,
192, 168, 1, 2: 0.0.0.0 via 192.168.1.2 (default route)

Не забудьте також прочитати коментарі.

Також є інші потоки @ serverfault, які можуть бути корисні:

https://serverfault.com/questions/248821/does-the-os-x-dhcp-client-support-classless-static-routes-rfc3442

Ще одне: чи знаєте ви натискання OpenVPN? Ви можете пересувати маршрути безпосередньо через сервер OpenVPN, додавши такий варіант:

push "route 192.168.16.0 255.255.255.0 192.168.6.1" 

Що означає пройти статичний маршрут до клієнта для мережі 192.168.16.0 та маску 255.255.255.0 через 192.168.6.1.


Дякую, Міхал. Це дійсно не відповідає на запитання (у мене все ще немає способу просувати маршрути до моїх пристроїв Mac та iOS), але він містить корисні посилання. Коли я отримаю достатньо репутації, я проголосую за неї. FTR, я також включав і тестував DHCP варіант 249, але це також не працювало. Я оновлю питання, щоб показати свій dhcpd.conf.
Метт Сімерсон

Ви також пробували варіант DHCP 33?
Міхал Соколовський

Варіант 33 DHCP додає маршрут для однієї IP-адреси. У такому випадку, коли у мене є маршрутка / 16 блоків (по 65,534 додавачів кожен), це справді не буде корисним. Схоже, quagga додає кілька демонів маршрутизації до Mac OS (доступна в MacPorts), щоб вона могла працювати для Mac OS X.
Метт Сімерсон

Так, я знаю про опцію pushV OpenVPN. У цьому випадку мій сервер є клієнтом OpenVPN, і він є реципієнтом цих підштовхнутих маршрутів. Ось так, "Після підключення до VPN сервер отримує типові статичні маршрути".
Метт Сімерсон

Гаразд, тепер я зрозумів. :) Чи задумувались ви над тим, щоб додати статичний маршрут (и) на основний маршрутизатор, який би вказував на вашу мережу VPN через ваш сервер?
Міхал Соколовський

0

Здається, що правильною відповіддю на питання є "ви не можете".

Mac OS X (і iOS) не підтримують RFC 3442, і хоча Mac OS X 10.10 все ще включає в себе довідкову сторінку для маршрутизації, двійковий файл більше не присутній.

Є обхідні шляхи.

  1. Для інформування клієнтів Mac OS X про більш конкретні маршрути можна запустити демон маршрутизації на Mac OS X через програмний пакет під назвою quagga, що включає в себе ripd і ospfd, який потім може дізнатися маршрути OpenVPN з еквівалентних демонів на сервері ( кручений, квагга, зебра). Це дуже турбує, щоб уникнути №2.

  2. Вкажіть маршрут IPv4 за замовчуванням на сервер (замість маршрутизатора) та скористайтеся короткою орендою DHCP. Коли сервер недоступний, термін оренди DHCP швидко закінчується, і пристрої приймають нову оренду від AEBS із самим собою як шлюз за замовчуванням.

(Так, у мене є два сервери DHCP у моїй локальній мережі, які роблять це вже більше десяти років. Dhcpd на сервері виграє, за винятком випадків, коли він знижений, що означає, він працює чудово).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.