Mashine moja inaweza kutosheleza mahitaji yote matatu kwa wakati mmoja: kumaliza vifungu, kujibu HTTPS na kusambaza kati ya LAN mbili za kibinafsi. Iwapo hilo ni la busara hutegemea mambo matatu unayoweza kuamua kwenye karatasi: nani anamiliki anwani ya umma, nani anamiliki kila jozi ya lango na itifaki, na ni mchakato gani unaoruhusiwa kusambaza pakiti. Ukifanya haya sawa, mwenyeji wa pamoja hana kitu cha kipekee. Ukikosea, utatumia wikendi kwenye huduma inayoanza safi na haijibu kamwe.

Kinachofuata ni utaratibu wa maamuzi, si karatasi ya ujenzi. Kila hatua inaishia na ukaguzi unaothibitisha kwamba jukumu uliloongeza hivi punde limejitenga kweli.

Chagua mmiliki wa anwani kabla ya malango

Sehemu ya mwisho ya kifungu na seva ya wavuti zinaweza kushiriki kernel; kushiriki anwani, lango na itifaki moja kwa wakati mmoja ndiko kunakoshindikana. WireGuard kwa kawaida huchukua UDP 51820, OpenVPN huchukua UDP 1194 au TCP 443, na seva ya wavuti huchukua TCP 443. Jozi inayoumiza ni OpenVPN juu ya TCP 443 kando ya HTTPS, kwa sababu zote zinataka soketi moja na kernel humpa yule aliyeunganisha kwanza. Kiondoa-mwingi kilicho mbele tu, kama sslh au proksi inayojua TLS, huwapa ruhusa kushiriki lango hilo, na huongeza sehemu ambayo kushindwa kwake kunaonekana sawa na tatizo la firewall.

Angalia wamiliki kabla ya kubadilisha chochote: ss -lntup huchapisha anwani ya ndani, lango na mchakato wa kila soketi inayosikiliza. Mistari miwili inayoonyesha 0.0.0.0:443 inamaanisha huduma ya pili haikuunganisha kamwe, hata script yake ya init ilikuwa na furaha kiasi gani. Daraja pia huhamisha mmiliki. Wakati eth0 inajiunga na br0, IP huhamia br0 na kila kanuni ya firewall inayotaja eth0 huacha kufanana, kwa hiyo funga huduma kwenye daraja na uthibitishe kwa ip -br addr.

Kanuni hiyo hiyo ya umiliki inaeleza mshangao unaojitokeza na mashine pepe. Seva ya kifungu inayoendeshwa ndani ya mgeni kwenye LAN hiyo hiyo huhifadhi anwani ya mgeni, kwa hiyo miunganisho inayoelekea anwani ya mwenyeji wenyewe hubaki kwa mwenyeji na kifungu cha mgeni hakiioni kamwe, chohote kinachosema wasifu wa mteja.

Pitisha kati ya LAN mbili au fanya NAT upande mmoja

LAN mbili zisizoonana zinaweza kila moja kupiga simu mwenyeji wa umma, ambaye kisha husambaza kati ya vifungu. Muundo huo uliopitishwa unahitaji mambo matatu: usambazaji umewashwa, njia kuelekea kila kiambishi cha mbali na sera ya usambazaji inayoruhusu usafiri kupita. sysctl -w net.ipv4.ip_forward=1 hushughulikia ya kwanza, ip route add 10.20.0.0/24 dev wg1 ya pili, na mstari wa nftables kama nft add rule inet filter forward iifname "wg0" oifname "wg1" accept ya tatu.

NAT ya chanzo ni rahisi kuongeza na ngumu kutatua. Ufichaji huandika upya anwani ya mteja, kwa hiyo upande wa mbali huona kitovu badala ya mwenyeji halisi, na kanuni zake za ufikiaji na kumbukumbu huacha kuwa na manufaa kwa uhusishaji. Wakati mitandao yote miwili ni yako, pitisha. Wakati upande mmoja ni wa mtu wa tatu ambaye hataongeza njia ya kurudi, NAT ni chaguo linalotoka wiki hii. Kwa vyovyote vile, andika mpango wa anwani, kwa sababu /24 mbili zinazopishana haziwezi kupitishwa na usanidi wowote.

Hakuna kitu katika sanduku kutumika kama njia ya kutoka ya intaneti kwa kompyuta mpakato kinachozuia sanduku hilo hilo kumaliza vifungu vinavyoingia. Ni anwani zinazopishana tu zinazozuia, na ndiyo sababu mpango wa anwani ni hati inayojalisha.

Jaribu mgawanyiko wakati majukumu mawili yamesimama

Jaribio la manufaa ni kutoa: simamisha majukumu mawili na uthibitishe kwamba la tatu bado linajibu. Ombi la wavuti linapaswa kukamilika huduma ya kifungu ikiwa imezimwa, na kupeana mikono kwa kifungu kunapaswa kukamilika seva ya wavuti ikisimamishwa. Ikiwa zote mbili zinafanya kazi tu wakati kila kitu kinaendesha, una utegemezi wa bahati mbaya, kama jedwali la firewall linaloshirikiwa, njia iliyopotea au jina linaloelekeza anwani isiyo sahihi.

Amri tatu hufanya jaribio hilo liwe dhahiri. curl -sk --resolve example.test:443:203.0.113.10 https://example.test/ huthibitisha kwamba msikilizaji wa ndani hujibu bila DNS ya nje, wg show kwa mteja huthibitisha kwamba kupeana mikono kumekamilika, na tcpdump -ni any port 51820 kwenye kitovu hutenganisha tatizo la kupitisha na tatizo la ufunguo. Kupeana mikono kusikoonekana kamwe kwenye nakala kulikufa kabla ya mwenyeji: firewall ya mtoa huduma, anwani ya umma isiyo sahihi au kanuni ya NAT njiani.

Rudia kutoa kwa LAN zinazosambazwa. Pacha mmoja akikatika, ping kupitia kitovu inapaswa kushindikana; akirudishwa, ping inapaswa kupona bila kugusa kanuni. Ping inayopona tu baada ya kuwasha upya kifungu inaelekeza sera badala ya ufikikaji, na hilo ni marekebisho tofauti.

Weka seti ya kanuni ikisomeka unapotoa majukumu. nft list ruleset inapaswa kuonyesha kanuni moja ya kukubali kwa kila mwelekeo unaouhitaji kweli, na mnyororo wa usambazaji unaokubali kila kitu si utengano, ni onyesho linalofanya kazi.

Laini za ufikiaji za IPv6 tu na huduma za IPv4

Baadhi ya laini za ufikiaji hutoa ufikikaji wa IPv6 tu, na huduma bado zinapaswa kuchapishwa kupitia IPv4. Kifungu chenyewe husafiri kupitia familia inayoruhusu trafiki bado, wakati huduma iliyochapishwa inakaa kwenye anwani ndani ya kifungu. Hii hupindua dhana ya kawaida na huvunja ufuatiliaji kwa utulivu: kanuni ya firewall au ukaguzi wa muda wa kufanya kazi ulioandikwa kwa njia ya IPv4 sasa unatazama kiolesura kisichobeba chochote.

Jaribu kila familia peke yake kwa curl -4 na curl -6, kwa sababu ombi moja lililofanikiwa halisemi chochote kuhusu njia ambayo hukujaribu. Umiliki wa lango haubadiliki kati ya familia, lakini msikilizaji hubadilika: ss -lntup huorodhesha soketi za IPv4 na IPv6 kwenye mistari tofauti, na 0.0.0.0:443 haifuniki [::]:443 isipokuwa mchakato uliomba soketi ya dual-stack.

Huduma inayojibu kwenye familia moja na kukataa kwenye nyingine kwa kawaida ni tatizo la msikilizaji, si la kupitisha. Kabla ya kutangaza muundo umekamilika, thibitisha kwamba kila jukumu linamiliki anwani au lango lake, kwamba usambazaji umewashwa na unaruhusiwa, na kwamba kila jukumu bado linajibu majukumu mengine mawili yamesimama.

Makala zinazohusiana