Екі байланыссыз ақау бір шағымды тудырады. Біріншісінде бір клиент екіншісіне туннель мекенжайымен де жете алмайды, өйткені мекенжайлар бір subnet-те емес немесе сервер теңдестер арасындағы трафикті жібермейді. Екіншісінде ping жұмыс істейді, ал қолданбаның құрылғы тізімі бос қалады, өйткені табу 3-қабат туннелі тасымалдай алмайтын broadcast-қа сүйенеді. Бір ping оларды ажыратады, әрқайсысының түзетуі екіншісінің түзетуіне мүлде ұқсамайды.

Бір ping мәселені екіге бөледі

Бір клиенттен екінші клиенттің туннель мекенжайына ping жасаңыз, оның атына және LAN мекенжайына емес. Егер сәтсіз болса, мәселе жіберуде немесе мекенжайлауда, және ол түзелмейінше табу маңызсыз. Егер сәтті болса, жіберу әлдеқашан жұмыс істейді, қалған олқылық — broadcast немесе атауларды шешу.

ip addr show tun0

Бәрінен бұрын клиенттің интерфейсін оқыңыз, өйткені топологияны желілік маска атайды. /24 немесе басқа subnet маскасы ортақ пулды білдіреді; теңдес мекенжайы бар /30 ескі нүкте-нүкте схемасын білдіреді, онда әр клиенттің дәл бір көршісі бар — сервер.

net30 subnet-ке қарсы, клиент жағынан оқылғанда

What you observenet30subnet
Client netmask/30 with a peer addressThe pool's own mask
Peers a client can address directlyOne, the serverEvery client in the pool
AddressingOne /30 block per client, with the server as the only peerOne pool mask shared by all clients
Effect of client-to-clientRequired for any peer trafficRequired for peer traffic, still no broadcast

net30 кезінде сервер әр клиентке кішкентай блок береді, сондықтан басқа клиенттің туннель мекенжайына маршрут сервер оны жібермейінше болмайды. subnet кезінде бүкіл пул бір желі, әр клиент кез келгеніне жүгіне алады, ал сервер олардың арасында жібереді. Сондықтан бір сервер конфигурациясы сау көрінуі мүмкін, ал теңдестер арасындағы ping сәтсіз болады: ештеңе бұзылмаған, клиенттер жай ғана бір желіде емес. Клиент жұмыс істеп тұрған байланысты және жауап бермейтін теңдес мекенжайын көреді, бұл firewall сияқты оқылады, бірақ шын мәнінде мекенжайлау схемасы.

Директиваны ауыстыру — сервер жағындағы өңдеу және қайта іске қосу, және ол әлдеқашан ашылған сессияларға емес, келесі қосылымға қолданылады. Өзгерістерді бағаламас бұрын клиенттерді қайта қосыңыз. Егер құрылғы конфигурацияны веб-интерфейстен қайта жасаса, директиваны, файлды және күнді жазып қойыңыз, және интерфейс болса өңдеуді сол арқылы жасаңыз, өйткені қайта құру келесі сақтауда қолмен жасалған өңдеуді басып жазады.

client-to-client — бөлек қақпа

Бір subnet ішінде де сервер бір клиенттен келіп, екіншісіне арналған пакеттерді client-to-client орнатылмаса тастайды. Бұл кілт сөз серверді тек қабылдайтын соңғы нүкте емес, теңдестер трафигінің жіберушісіне айналдырады. Топологияны түзеткеннен кейін адамдар жіберіп алатын екінші шарт — осы.

Бұл broadcast-қа таралмайды. Параметр клиенттер арасында unicast жібереді; ол туннельді ортақ сегментке айналдырмайды, және оның қандай да бір мөлшері multicast табу сұранысын әр теңдеске жеткізбейді.

TUN және TAP, және әрқайсысы нені тасымалдай алады

PropertyTUNTAP
LayerLayer 3, IP packetsLayer 2, Ethernet frames
Broadcast and multicastNot carriedCarried
Bridging to the LANNot applicableRequired for a shared segment
Client platform supportEverywhereMissing 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 арасындағы жолдан тыс ұстаңыз.

Қатысты мақалалар