OpenVPN кардарлары бири-бирин көрбөйт: subnet же net30?
Кардарлар серверге жетет, бирок бири-бирине эмес. Жаңылышты бир ping менен бөлүп, анан subnet топологиясын, client-to-client же көпүрөлөнгөн TAP сегментин тандаңыз.
Эки байланышсыз жаңылыш бир эле нааразылыкты жаратат. Биринчисинде бир кардар экинчисине туннель дареги менен да жете албайт, анткени даректер бир subnet де эмес же сервер теңдештер ортосундагы трафикти өткөрбөйт. Экинчисинде ping иштейт, бирок колдонмонун түзмөк тизмеси бош калат, анткени табуу 3-катмардын туннели ташый албаган broadcast'ко таянат. Бир ping аларды ажыратат, жана ар биринин оңдоосу экинчисинин оңдоосуна такыр окшошпойт.
Бир ping маселени экиге бөлөт
Бир кардардан экинчи кардардын туннель дарегине ping жасаңыз, анын атына жана LAN дарегине эмес. Эгер ал ийгиликсиз болсо, маселе өткөрүүдө же даректөөдө, жана ал оңдолмоюнча табуу маанисиз. Эгер ийгиликтүү болсо, өткөрүү мурунтан иштеп жатат, калган кемчилик broadcast же аттарды чечүү.
ip addr show tun0
Баарынан мурун кардардын интерфейсин окуңуз, анткени топологияны тармактык маска атайт. /24 же башка subnet маскасы жалпы пулду билдирет; теңдеш дареги бар /30 эски чекит-чекит схемасын билдирет, анда ар бир кардардын так бир коңшусу бар, сервер.
net30 subnetке каршы, кардар тарабынан окулганда
| 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 менен сервер ар бир кардарга кичине блок берет, ошондуктан башка кардардын туннель дарегине маршрут сервер аны өткөрмөйүнчө жок. subnet менен бүт пул бир тармак, ар бир кардар каалаганга кайрыла алат, ал эми сервер алардын ортосунда өткөрөт. Ошондуктан бир сервер конфигурациясы соо көрүнүшү мүмкүн, ал эми теңдештер ортосундагы ping ийгиликсиз болот: эч нерсе бузулган эмес, кардарлар жөн гана бир тармакта эмес. Кардар иштеп жаткан байланышты жана жооп бербеген теңдеш дарегин көрөт, бул firewall сыяктуу окулат, бирок чындыгында даректөө схемасы.
Директиваны алмаштыруу — сервер тарабындагы оңдоо жана кайра иштетүү, жана ал мурунтан ачылган сессияларга эмес, кийинки туташууга колдонулат. Өзгөртүүнү баалардан мурун кардарларды кайра туташтырыңыз. Эгер түзмөк конфигурацияны веб-интерфейстен кайра жаратса, директиваны, файлды жана датаны жазып коюңуз, жана интерфейс болсо оңдоону ошонун аркылуу жасаңыз, анткени кайра куруу кийинки сактоодо кол менен жасалган оңдоону басып жазат.
client-to-client өзүнчө дарбаза
Бир subnet ичинде да сервер бир кардардан келип, экинчисине арналган пакеттерди 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-катмардын табуусуна көз каранды болгондо гана кайрылыңыз, андан мурун эмес.
Көпүрөсүз бир subnet кардарлары
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ты топтогу ар бир кардар платформасы колдосо гана пайдаланыңыз.
- Бир subnet ичиндеги жеткиликтүүлүк маанилүү болгондо NATты туннель менен LANдын ортосундагы жолдон тышкары кармаңыз.