Айлык маалымат квотасы OpenVPN эсебине кайда таандык
Ар бир кайра туташууда баштапкы абалга келүүчү квота чектөө эмес. Колдонууну эсеп боюнча көзөмөлдөңүз, ар бир байт айырмасын бир жолу эсептеңиз жана түгөнүү кирүүнү тоскусун.
Туннель ар кайра туташкан сайын баштапкы абалга келүүчү квота чектөө эмес, жана туруктуу абалды сактоочу жер жок VPN серверине байт эсептегичти бурап бекиткенде так ушуну аласыз. Эсептегич сеанска таандык; квота адамга же түзмөк келишимине таандык. Бул функциянын бардык кыйынчылыгы ушул дал келбестиктен келип чыгат, ошондуктан төмөнкү текшерүүлөр абал кайда жашайт жана кайсы катмар чечим кабыл алууга укуктуу экенине багытталган.
Квотаны туннелге эмес, эсепке бекитиңиз
Квотанын субъектисин атоодон баштаңыз. Бир адамдын үч түзмөк сертификаты болушу мүмкүн, жана алардын эч бири өзүнчө аутентификацияланганы үчүн өзүнчө айлык бюджет алышы керек эмес. Кайра туташууларга, жаңы туннель даректерине жана экинчи шлюзга көчүүгө туруштук берген туруктуу эсеп идентификатору — квота колдоно алган жалгыз чегиртке. Сертификаттын жалпы аты ушул ачкыч катары сиздин берүү саясатыңыз ар бир атка бир эсеп кепилдик бергенде гана иштейт.
Дайындалган туннель дареги эч качан жооп эмес. Даректер кайра иштетилет, пулдар жалпы, жана бир эсеп ошол эле мүнөттө эки шлюзда эки жолу көрүнүшү мүмкүн. Эгер китеп дарекке негизделсе, резервуарды кайра толтуруу үчүн ажыратып кайра туташуу жетиштүү.
Эсептөө текшериле тургандай болушу үчүн сеанс боюнча жетиштүү жазыңыз: эсеп, эсеп айырышуу мезгили, шлюз үлгүсү, сеанс идентификациясы, акыркы байкалган эсептегичтер жана бекитилген жалпы сумма. Сеанс идентификациясына демондун ишке кирүү муунун кошуңуз, анткени кайра иштетилген сервер кардар IDлерин кайра колдонот жана жөнөкөй дал келтирүү мурунку базалык сызыкты мурастайт.
Бирдикти, багытты жана баштапкы абалга келтирүү чегин бекитиңиз
Ар кандай жыйноо башталганга чейин төрт аныктама жазуу түрүндө бекитилиши керек. Квота кардар жөнөткөн байттарды, ал кабыл алган байттарды же экөөнүн суммасын эсептейби? Гигабайт 10^9 байтпы же 2^30бу? Мезгил кайсы жергиликтүү саатта жана кайсы убакыт алкагында алмашат? Жана эсептегич так эмнени өлчөйт, туннелдин үстүнкү чыгымдары жана кайра жөнөтүүлөр кирет, ал эми колдонмо файлынын өлчөмү жана провайдердин эсеби кирбейт?
Бул тандоолордун эч бири туура эмес эмес, бирок ишке ашыруу жана кардар көргөн сан макулдашууга тийиш. Бир системанын эки жарымы GiB же жергиликтүү убакыттын ордуна UTC жарым түнүндө болуучу алмашуу боюнча макулдашпаса, бүт квотага ишенимди начарлатуучу так ошондой билет чыгат.
Байт суммаларын бир алынуучу айырмага айландырыңыз
Башкаруу интерфейси кардар IDсин жана ар бир багыттагы топтолгон байт суммаларын ташыган мезгилдик BYTECOUNT_CLI саптарын билдирет, ал эми bytecount командасы алардын канчалык тез-тез келерин аныктайт. Сервердин көз карашынан алганда, кабыл алынган сан кардар жөнөткөн байттарды эсептейт, ал эми жөнөтүлгөн сан ага жеткирилген байттарды эсептейт. Интервалды китеп сиңире ала тургандай кылып коюңуз; абдан кыска интервал чындыгында ала албаган тактыкты сатып алат.
Бир чектөө бүт дизайнды калыптандырат: башкаруу сокети бир гана башкаруу туташуусун кабыл алат. Мониторинг экспорттоочусу, GUI жана сиздин контроллериңиз ар бири өзүнүн туташуусун ача албайт. Кайсы процесс каналга ээ экенин чечиңиз жана калгандары андан абалды окусун, анткени бул интерфейс административдик аракеттерди берет жана аны хосттон тышкары көрсөтпөө керек.
rx_delta = sample.rx_now - session.prev_rx
tx_delta = sample.tx_now - session.prev_tx
charge = rx_delta + tx_delta
# same transaction:
ledger.total += charge
session.prev_rx, session.prev_tx = sample.rx_now, sample.tx_now
Жаңы базалык сызыктарды жана колдонуу өсүшүн чогуу бекитиңиз, ошондо үлгүнү кайра ойнотуу эки жолу алуунун ордуна эч нерсе албайт. Артка жылган эсептегич — сигнал, карыз эмес: бул сеанс алмаштырылганын же демон кайра иштетилгенин билдирет, жана туура жооп терс сумманы кредиттөө эмес, сеанс идентификациясын шайкештештирүү.
Ажыратуу жолу да ушундай камкордукту талап кылат. Эгер акыркы окуя сеанс аягынын суммаларын ташыса, акыркы бекитилген үлгүдөн айырманы гана алыңыз. Мезгилдик үлгү алынып бүткөндөн кийин толук сумманы кошуу — үйдө жасалган квота системаларындагы эң кеңири тараган кош эсептөө. Мезгил чегин кесип өткөн сеанстарга да эреже керек, анткени бир акыркы сумма байттар жарым түндөн качан өткөнү тууралуу маалымат ташыбайт.
Түгөнүү кирүүнү четке каксын, туннелди гана өлтүрбөсүн
Эсеп өз чегине жеткенде эки нерсе болушу керек: учурдагы сеанстар бүтөт жана жаңылары четке кагылат. Башкаруу протоколу кардар IDси боюнча client-kill сунуштайт, бул биринчи жарымын чечет, эгер эсептин ар бир тирүү сеансын санап чыксаңыз, кокус байкаган бир даректи өлтүрүүнүн ордуна.
Экинчи жарым — квота дизайндары ишке ашпаган жер. Жалгыз өлтүрүү кардардын кайра туташуу циклинен жарыш, ал бир нече секунддан кийин кубаныч менен кайтып келет. Кирүү жалпы китеп менен кеңешиши керек, ал эми көп шлюздүү жайгаштырууда бул текшерүү машинага арналган файл боло албайт. Кирүүнү кабыл ала алган ар бир үлгү бирдей түгөнгөн абалды көрүшү керек.
Токенге негизделген кайра туташуулар өз сынагына татыктуу. OpenVPN 2.6 auth-gen-token аркылуу сеанс токенин ичинен текшере алат, контроллериңиз чекти аткаруу үчүн колдонгон тышкы аутентификация чакырыгын өткөрүп жиберет. Ошондуктан азырынча жарактуу токен идентификацияны далилдейт, калган квотаны эмес, жана ар бир жаңы кардар үлгүсү дагы эле китеп менен кеңешиши керек. Анын ордуна management-client-auth күйгүзсөңүз, контроллер аутентификатор болуп калат жана сеанс абалын талдап, мөөнөтү өткөн же жараксыз токендерди өзү четке кагуу милдетин мурастайт.
Үлгүлөө жараткан ашып кетүүнү кабыл алыңыз
Мезгилдик байкоо жана ажыратуу сизге белгилүү чыдамдуулуктагы үлгүлөнгөн квота берет. Кардар болжол менен бир отчеттук интервал жана контроллердун аракет кылышына кетүүчү убакытка ашып кетиши мүмкүн, ал эми бир эсептеги параллелдүү сеанстар бул терезени бир нече эсе көбөйтөт. Акыркы байтта так кесүүнү жарнамалоонун ордуна, бере албаган нерсеңизди интерфейсте айтыңыз.
Чыныгы катуу шып — башка инженердик маселе: жөнөтүү жолунун ичинде сеанстар бою бир эсепке байланган аткаруу. Эсептегичтерди тезирээк окуу бир нерсе эмес жана жөн гана көбүрөөк туннель ачкан кардарга туруштук бербейт.
Ишке киргизүүдөн мурун жөнөкөй ишке ашырууларды буза турган кабыл алуу учурларын иштетиңиз: кайталанма кайра туташуулар, бир убакта эки түзмөк, контроллер менен шлюздун кайра иштетилиши, жоголгон ажыратуу окуясы, сеанс ортосунда мезгилдин алмашуусу жана түгөнгөндөн кийин дароо токен менен кайра туташуу аракети. Андан кийин эсеп жүргүзүү үзгүлтүктөрүнүн иштен чыгуу режимин чечиңиз. Туруктуу китеп жазган колдонууңузду коргойт; эч качан келбеген байкоолорду тирилте албайт, жана кардар ошол эки жагдайдын кайсынысында экенин билүүгө татыктуу.