OpenVPN клиентите не се гледаат меѓусебно: подмрежа или net30?
Клиентите стигнуваат до серверот, но не еден до друг. Разделете го дефектот со еден ping, потоа изберете топологија на подмрежа, client-to-client или мостен TAP сегмент.
Два неповрзани дефекти ја даваат истата поплака. Во првиот, еден клиент не стигнува до друг дури ни по адресата на тунелот, затоа што адресите не се во иста подмрежа или серверот не го препраќа сообраќајот меѓу партнерите. Во вториот, ping работи, а списокот со уреди во апликацијата останува празен, затоа што откривањето се потпира на broadcast што тунел од 3-то ниво не може да го носи. Еден ping ги разделува, а поправката за секој од нив воопшто не личи на поправката за другиот.
Еден ping го дели проблемот на два
Од еден клиент, пингнете ја адресата на тунелот на другиот клиент, не неговото име и не неговата LAN адреса. Ако тоа не успее, проблемот е во препраќањето или адресирањето и откривањето е неважно додека не се поправи. Ако успее, препраќањето веќе работи и остатокот е broadcast или разрешување имиња.
ip addr show tun0
Прочитајте го интерфејсот на клиентот пред сето друго, затоа што мрежната маска ја именува топологијата. /24 или друга маска на подмрежа значи заеднички базен; /30 со адреса на партнер значи постарата поставеност точка-точка, каде секој клиент има точно еден сосед, серверот.
net30 наспроти подмрежа, прочитано од страната на клиентот
| What you observe | net30 | subnet |
|---|---|---|
| Client netmask | /30 with a peer address | The pool's own mask |
| Peers a client can address directly | One, the server | Every client in the pool |
| Addressing | One /30 block per client, with the server as the only peer | One pool mask shared by all clients |
| Effect of client-to-client | Required for any peer traffic | Required for peer traffic, still no broadcast |
Со net30 серверот доделува мал блок на секој клиент, така што маршрута до адресата на тунелот на друг клиент не постои освен ако серверот не ја препрати. Со подмрежа целиот базен е една мрежа, секој клиент може да се обрати до секој друг и серверот препраќа меѓу нив. Затоа една конфигурација на сервер може да изгледа здрава додека ping меѓу партнерите не успее: ништо не е расипано, клиентите едноставно не се во една мрежа. Клиентот гледа работна врска и адреса на партнер што не одговара, што звучи како ѕид за заштита, но е поставеност на адресирање.
Менувањето на директивата е уредување на страната на серверот плус рестарт, и важи за следната врска, а не за веќе отворени сесии. Повторно поврзете ги клиентите пред да ја оцените промената. Ако уредот повторно ја генерира конфигурацијата од веб-интерфејс, запишете ја директивата, датотеката и датумот, и направете ја измената преку интерфејсот кога има таков, затоа што повторното создавање ќе ја презапише рачната измена при следното зачувување.
client-to-client е одделна порта
Дури и внатре во една подмрежа серверот ги отфрла пакетите што доаѓаат од еден клиент и се упатени до друг, освен ако client-to-client не е поставено. Тој клучен збор го прави серверот препраќач на сообраќајот меѓу партнерите наместо крајна точка што само го прифаќа. Тоа е вториот услов што луѓето го пропуштаат откако ќе ја поправат топологијата.
Тоа не се протега на broadcast. Поставката препраќа unicast меѓу клиентите; таа не го прави тунелот заеднички сегмент и ниедно количество од неа нема да достави multicast барање за откривање до секој партнер.
TUN наспроти TAP и што може да носи секој
| Property | TUN | TAP |
|---|---|---|
| Layer | Layer 3, IP packets | Layer 2, Ethernet frames |
| Broadcast and multicast | Not carried | Carried |
| Bridging to the LAN | Not applicable | Required for a shared segment |
| Client platform support | Everywhere | Missing on Android and iOS, limited on macOS |
Мостот на tap уред во LAN ги става оддалечените клиенти во broadcast доменот на канцеларијата, што целосно го решава откривањето. Цената се платформите што не имплементираат TAP, мостот што мора да постои на серверот и доменот на откажување каде broadcast бура на канцеларискиот кабел стигнува до секој оддалечен преносен сметач.
За две или три работни станици на кои им треба разрешување имиња, запис во hosts или unicast адреса е далеку поевтин од мост. Посегнете по TAP кога протокол што не можете да го замените зависи од откривање на 2-то ниво, и не порано.
Клиенти во иста подмрежа без мост
Доделувањето на адреса од опсегот на LAN не го става клиентот на кабелот. Серверот рутира меѓу тунелот и Ethernet, така што ARP за таа адреса застанува на интерфејсот на серверот и остатокот од LAN никогаш не дознава каде живее.
ip neigh add proxy 10.50.1.250 dev eth0
Proxy ARP ја затвора таа празнина така што серверот одговара во името на клиентот. За опсег, parpd ги управува записите како што клиентите доаѓаат и си одат, додека sysctl net.ipv4.conf.eth0.proxy_arp=1 одговара за сето она што се рутира на друго место, што е доволно широко за да создаде сопствени изненадувања на зафатен сегмент.
Кој и пат да изберете, отстранете го NAT меѓу тунелот и кабелот. Правилото MASQUERADE го крие токму прашањето за адресирање на кое се обидувате да одговорите. Тоа му остава и на следниот човек топологија за која тој не може да размислува од страната на клиентот.
Пред да промените нешто, фатете еден обид на серверот со tcpdump -ni tun0 и потврдете дали пакетот на партнерот воопшто пристигнува. Пристигнува и се отфрла — тоа упатува на client-to-client; никогаш не пристигнува — упатува на топологија или рутирање. Прирачникот на OpenVPN 2.6 ги документира двата клучни збора и стандардната топологија, што вреди да се спореди со вашата верзија пред да копирате ред од форумски пост.
- Интерфејсот tun покажува маска на базен, а не пар партнер /30.
- Директен ping до другата адреса на тунелот успева пред да го тестирате откривањето.
- Конфигурацијата на серверот вклучува
client-to-clientкога партнерите мора да разменуваат пакети. - Именувајте го протоколот за откривање што го тестирате наместо да кажете дека апликацијата не успева.
- Користете TAP само ако секоја клиентска платформа во групата го поддржува.
- Држете го NAT надвор од патеката меѓу тунелот и LAN кога е важна достапноста во истата подмрежа.