Conas fo-líonra a eisiamh ó thollán VPN Android
Ní féidir le VpnService bealach a eisiamh, mar sin cuireann tú an comhlán leis: ocht réimír ghinte do /8, móide na seiceálacha IPv6, DNS agus cuardaigh a ghlacann an chuid eile.
Níl aon bhealach eisiamh ag VpnService Android, agus ní tháirgefaidh aon mhéid léitheoireachta API ceann. Ní chuireann Builder.addRoute() ach ceann scríbe leis an tollán, mar sin má choinnítear deighleog LAN go háitiúil ciallaíonn sé nach dtéann an deighleog sin isteach sa liosta bealaí ar chor ar bith. Is é an rud a chuireann tú leis ina ionad ná comhlán na deighleoige, curtha in iúl mar réimíreanna rialta. Is uimhríocht an obair, agus teipeann sí i ndornán áiteanna intuartha.
Oibrigh na seiceálacha thíos in ord. Glacann gach ceann leis gur sheas an ceann roimhe, mar sin stad ag an gcéad chliseadh seachas comharthaí a phaisteáil níos faide síos.
Tosaigh ón méid a mhaíonn an tollán
Nuair a chuireann tú 0.0.0.0/0 chuig addRoute(), insíonn sé do Android go mbaineann gach ceann scríbe IPv4 leis an tollán. Sin é an fáth a bhfuil an oiread sin cliant cosúil le bheith neamhábaltach ar thollánú roinnte: maíonn siad an spás seoltaí iomlán agus ansin déanann siad iarracht dealú uaidh. Ní dhealraíonn aon rud san fhoirgneoir. Déanann bealach níos sonraí don líonra a bhí uait a choinneáil áitiúil a mhalairt de rud a mbíonn súil ag daoine leis, mar bíonn an réimír is faide a mheaitseálann i réim agus tagann an líonra sin isteach sa tollán.
Is é an liosta bealaí an pholasaí iomlán. Níl aon chrosdhíothú de réir cinn scríbe taobh thiar de, agus ní liostaíonn tagairt Builder aon mhodh a sholáthródh ceann.
Gin an comhlán ó uimhríocht réimíreanna
Is é comhlán réimíre eisiata tacar a siblíní ar an gcosán chuig fréamh an chrainn seoltaí. I gcás gach faid ó 1 suas go dtí an fhad eisiata, tóg an bloc den fhad sin ina bhfuil do réimír, smeach an giotán díreach faoin réimír agus astaigh an toradh. Is cosúil go bhfuil sé teibí go dtí go ritheann tú é.
Tugann eisiamh 10.0.0.0/8 ocht mbealach: 128.0.0.0/1, 64.0.0.0/2, 32.0.0.0/3, 16.0.0.0/4, 0.0.0.0/5, 12.0.0.0/6, 8.0.0.0/7, 11.0.0.0/8. Ní bhíonn 10.0.0.0/8 in aon cheann acu, agus le chéile clúdaíonn siad gach rud eile.
Gineann ocht líne an liosta sin d'aon réimír:
import ipaddress
def complement(addr, length):
base = int(ipaddress.IPv4Address(addr))
out = []
for k in range(1, length + 1):
block = base & (0xFFFFFFFF << (32 - k))
sibling = block ^ (1 << (32 - k))
out.append(f"{ipaddress.IPv4Address(sibling)}/{k}")
return out
print(complement("10.0.0.0", 8))
Is ionann líon na mbealaí agus fad na réimíre, agus sin an uimhir ar cheart súil a choinneáil uirthi. Cosnaíonn eisiamh /21 amháin 21 bealach agus fanann sé inléite. Is féidir le deich n-eisiamh cúpla céad a chostáil, rud a chiallaíonn de ghnáth gur gá dearadh an líonra a athrú seachas an gineadóir.
Seiceáil an teaghlach seoltaí agus scóip an tolláin
Ní dhéanann bealaí IPv4 aon rud do IPv6. Má mhaíonn an tollán seoladh IPv6, teastaíonn a chomhlán féin ó réimír LAN IPv6, ginte leis an uimhríocht chéanna thar 128 giotán. Cúis choitianta a n-oibríonn an t-eisiamh ar pháipéar agus an gléas áitiúil fós do-shroichte is ea seo: sroicheadh an t-óstach thar IPv6, agus ní raibh ach IPv4 gearrtha amach. Seiceáil an dá theaghlach sula dtagann tú ar an gconclúid go bhfuil an mhatamaitic mícheart.
Is é an scóip an leath eile den seiceáil. Riaraíonn Android bealachú do gach líonra agus do gach aip, mar sin is féidir an réimír chéanna a thollánú d'aip amháin agus a bheith díreach d'aip eile ag brath ar conas a fógraíodh an VPN.
Cuir rialacha DNS agus in aghaidh na haipe san áit ar cheart dóibh a bheith
Ní athraíonn eisiamh bealaí an réititheoir. Is féidir le freastalaí DNS an tolláin freagra a thabhairt fós ar óstainm áitiúil agus a sheoladh á bhealachú go háitiúil, agus taispeántar an mhíthreoir mar ainm a réitíonn go rud nach féidir leis an LAN a shroicheadh. Socraigh polasaí an réititheora go toiliúil, le fearann cuardaigh nó le riail DNS scoilte. Ná glac leis gur shocraigh na bealaí é ar do shon.
Coinníonn addDisallowedApplication() aip amháin amuigh as an tollán; ní choinníonn sé ceann scríbe amuigh do na haipeanna a fhanann istigh. Ligeann protect() do shocóid a osclaíonn tú an tollán a sheachaint, agus is mar sin a sheachnaíonn tollán a iompar féin a ghabháil. Ní thagann ceachtar acu in ionad an chomhláin.
Fíoraigh le cuardach, ní le do liosta féin
Nuair a bheidh an tollán suas, fiafraigh den ghléas cá dtéann seoladh i ndáiríre in ionad an liosta a thóg tú a athléamh. Ar thógáil a sheolann iproute2, ainmníonn adb shell ip route get 10.1.2.3 an chomhéadan a roghnaigh an t-eithne. Rith an t-ordú céanna do sheoladh poiblí agus deimhnigh go n-ainmníonn sé an tollán.
Dúnann dhá sheiceáil eile an lúb. Réitigh óstainm áitiúil ar dtús, ansin rith adb shell ip route get ar an seoladh réitithe agus éiligh comhéadan nach é an tollán é, mar cruthaíonn adb shell ping -c 1 host.lan rathúil inrochtaineacht agus ní an cosán. Déan an tástáil teaghlaigh seoltaí a athrá thar IPv6 má mhaíonn an tollán ceann. Tástáil ar an leibhéal API a sheolann tú, mar tá an bealach a nochtar líonraí VPN don tábla bealachúcháin athraithe thar eisiúintí. Is fabhtanna éagsúla iad liosta bealaí a bhféachann ceart ar pháipéar agus cuardach a roghnaíonn an comhéadan mícheart, agus ní shroicheann ach an dara ceann úsáideoirí.
Má leanann an liosta eisiamh ag fás, stop ag giniúint bealaí agus athuimhrigh an líonra cianda nó caolaigh an tollán ina ionad. Is bealach timpeall ar an API atá ar iarraidh é an gineadóir, ní uirlis dearaidh.