Чаму хост у лакальнай сетцы адпраўляе ARP для адраса кліента OpenVPN
Пул кліентаў унутры прэфікса лакальнай сеткі прымушае лакальную сетку адпраўляць ARP для адраса, да якога яна не можа дабрацца. Прачытайце прэфікс, прасачыце рашэнне пра прамое злучэнне, потым перанясіце пул.
Праблемы даступнасці паміж хостам у лакальнай сетцы і кліентам VPN часта вядуць да самога плана адрасацыі. Дайце гэтаму хосту інтэрфейс на 10.0.100.0/22, і ён будзе лічыць кожны адрас ад 10.0.100.0 да 10.0.103.255 падключаным непасрэдна, уключаючы пул кліентаў, ціха размешчаны на 10.0.101.0/24. Адказ ніколі не ідзе на маршрутызатар, бо з пункту гледжання хоста маршрутызатар не ўдзельнічае. Пакет адрасаваны суседу і запытваецца на провадзе.
Гэты механізм стаіць за цэлай сям'ёй паведамленняў: тунель узняты, у сервера ёсць маршрут, а хост у лакальнай сетцы ўсё яшчэ не можа дабрацца да кліента.
Прэфікс /22, які паглынае /24
Чытайце прэфікс як дыяпазон, а не як радок. Прэфікс /22 змяшчае 1024 адрасы, а 10.0.100.0/22 цягнецца ад 10.0.100.0 да 10.0.103.255, таму пул на 10.0.101.0/24 цалкам ляжыць унутры. Памылка перажывае праверку, бо першыя актэты пула выглядаюць інакш, чым першыя актэты лакальнай сеткі, і толькі трэці актэт выдае ўкладзенасць. Запішыце абодва дыяпазоны ў ліках, перш чым абвясціць іх асобнымі.
Тая ж укладзенасць можа праявіцца і ў адваротны бок. Пул, які выглядае свабодным, бо цяпер яго ніхто не выкарыстоўвае, усё ж можа трапіць у прэфікс, абвешчаны нейкім маршрутызатарам пляцоўкі, і план адрасацыі — адзіны дакумент, які гэта паказвае.
Прамое злучэнне азначае ARP, а не маршрутызацыю
Калі хост з інтэрфейсам /22 адпраўляе на 10.0.101.25, ядро параўноўвае атрымальніка з прэфіксам інтэрфейса і знаходзіць супадзенне. Пакет становіцца пошукам суседа, а не маршрутызаваным пакетам, а ў Ethernet пошук суседа — гэта ARP-запыт для гэтага адраса. Калі адрас належыць кліенту VPN за маршрутызаваным шлюзам, ніводзін хост у лакальнай сетцы ім не валодае, таму запыт застаецца без адказу, а пакеты адкідваюцца. Тунель не вінаваты, і кліент ніколі не бачыць трафік.
Таму збой выглядае асіметрычным і часам перарывістым. Хост VPN часта дастае лакальную сетку, бо яго ўласныя маршруты паказваюць у патрэбны бок, тады як хост у лакальнай сетцы не можа адказаць, і любое кэшаванне састарэлага запісу ARP прымушае сімптом мігцець.
TUN, TAP і што нясе кожны
Прылада TUN пераносіць IP-пакеты, а прылада TAP пераносіць кадры Ethernet. Маршрутызаванае злучэнне TUN не павінна пераносіць ARP, каб забяспечыць даступнасць IP, і менавіта таму запыт без адказу вышэй чаканы, а не зламаны. TAP з наўмысна настроеным мостам можа пашырыць шырокавяшчальны дамен і прымусіць ARP працаваць, але гэта змяняе тое, што бачыць кліент, патрабуе канцавых пунктаў з той жа інкапсуляцыяй і ёсць пераробкай сеткавай мадэлі, а не рамонтам прэфікса, які перакрываецца. Пераход з маршрутызаванага разгортвання на TAP дзеля выпраўлення памылкі плана адрасацыі мяняе малую праблему на большую.
Запішыце, дзе з'явіўся ARP-запыт і якая сістэма яго адправіла, перш чым рабіць высновы. Адпраўнік кажа вам, што ён думае пра атрымальніка, а не што робіць тунель.
Спраектуйце пул, які не можа перакрывацца
Выберыце пул па-за кожным падключаным прэфіксам і кожным абвешчаным прэфіксам пляцоўкі, потым дадайце маршруты, якія робяць яго дасягальным у абодва бакі. Дыяпазон накшталт 10.8.0.0/24 у невыкарыстанай частцы плана лёгка абдумаць, а лакальная сетка, якой трэба да яго дабрацца, атрымлівае статычны маршрут, які паказвае на сервер VPN. Змяняйце разам выдзяленне, абвешчаныя маршруты, дазволеныя адрасы крыніц і правілы брандмаўэра, бо яны апісваюць адзін праект, а не чатыры налады.
Source NAT на серверы можа схаваць пул за адрасам, маршрутызаваным з лакальнай сеткі, і гэта законны інструмент міграцыі. Ён таксама перапісвае крыніцу, таму лакальная сетка губляе магчымасць адносіць злучэнні да асобных кліентаў і прымяняць правілы для кліента.
Для прыёмкі выкарыстайце рэальна прызначаны адрас сапраўднага кліента і сапраўдны запыт праграмы з хоста ў лакальнай сетцы, потым пацвердзіце, што адказ ідзе праз запланаваны шлюз, а не па провадзе.