Kufikia /24 ya mbali kupitia handaki: NETMAP, DNAT au njia?
Ramani kiambishi awali kizima kwa NETMAP, ongeza sheria za DNAT kwa kila mwenyeji au elekeza masafa halisi, na amua kulingana na kile upande wa mbali unapaswa kuona na nani anaweza kuanzisha trafiki.
Unaweza kufikia kijani kidogo nyuma ya kituo cha mwisho cha handaki kwa njia tatu, na dakika moja ya kukusanya ukweli kwa kawaida huondoa mbili. Ukweli ni kama seva za huko lazima zitofautishe watumiaji, kama mtu huko atawahi kupiga simu kuelekea masafa yako, na nani anaweza kuhariri kipanga njia cha upande wa mbali. Jibu hizo tatu na muundo unajichagua wenyewe. Mengineyo yanachukulia kuwa unaendesha kituo cha mwisho na unaweza kuhariri firewall yake.
Chaguo tatu, na kila kimoja kinabadilisha nini hasa
Urambazaji wa kiambishi awali, DNAT kwa kila mwenyeji na kiambishi awali kilichoelekezwa vyote huhamisha pakiti kati ya masafa mawili yale yale, lakini hubadilisha vitu tofauti. Urambazaji hubuni masafa ya jina la utani na kuandika upya anwani kwa hesabu wakati wa safari. Sheria za kila mwenyeji pia huandika upya, isipokuwa kila lengo hutajwa kwa mkono. Kiambishi awali kilichoelekezwa hakiandiki upya chochote: pakiti huhifadhi anwani halisi na pande zote mbili zinakubaliana anwani hizo zinaishi wapi.
| What the far side needs | Prefix mapping | Per-host DNAT | Routed prefix |
|---|---|---|---|
| Users visible to its logs | Only without source NAT | Same condition | Yes, unchanged |
| To start a connection toward you | No, alias is local | No, same reason | Yes, both ends route |
| To absorb a new host | Yes, arithmetic only | No, one rule per address | Yes, it simply routes |
| To require no config change | Yes, with source NAT | Yes, same condition | No, it needs a route back |
Anza kuondoa upande wa mbali, ambapo vikwazo ni vigumu zaidi kubadilisha. Ikiwa seva huko inaandika anwani za wateja kwenye kumbukumbu, inaziangalia dhidi ya orodha ya walioruhusiwa au inazikabidhi kwa mfumo mwingine, kutafsiri chanzo huharibu kitambulisho chake kimoja. Ikiwa upande wa mbali pia lazima upige simu kuingia, utafsiri umeondolewa kabisa, kwa sababu hakuna mtu huko anayejua kuwa jina la utani lipo. Ni pale tu upande wa mbali unapojibu tu maombi ambapo chaguo za bei nafuu huwa salama.
Jozi za kiambishi awali, na kwa nini ukubwa lazima ulingane
NETMAP ni lengo la jedwali la nat linalofanya kazi kwenye jozi ya viambishi awali vya urefu sawa. Haina jedwali la kila anwani ndani: huondoa kiambishi awali, huhifadhi biti za mwenyeji na kuziunganisha tena kwenye kiambishi awali kipya, ndiyo sababu /24 hupangwa kwenye /24 na kamwe kwenye /25. Nafasi huamua mwelekeo: ulinganifu wa lengo katika PREROUTING huandika upya pakiti inakokwenda, na ulinganifu wa chanzo katika POSTROUTING huandika upya ilikotoka.
Mwenyeji kwenye 192.168.2.17 huonekana kwa wateja wako kama 10.50.1.17, na okteti ya mwisho si pambo — ni nambari sawa pande zote mbili. Ongeza kesho mwenyeji kwenye 192.168.2.40 na jina lake la utani ni 10.50.1.40, bila sheria ya kuhariri.
Wateja bado wanahitaji njia ya masafa ya jina la utani inayoelekeza kwenye sanduku lako, isipokuwa jina la utani liko ndani ya kijani kidogo wanachofikia tayari. Lango haliitaji njia ya jina la utani, kwa sababu utafsiri wa lengo hufanyika katika PREROUTING, kabla ya utafutaji wa njia. Upelekwaji nao lazima uwe umewashwa, vinginevyo kerneli hutupa pakiti baada ya kuandika upya. Amri tatu hapa chini ni usanidi wote kwenye lango la mtindo wa Debian na wateja kwenye br0, jina la utani kwenye 10.50.1.0/24 na handaki kwenye tun0.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i br0 -d 10.50.1.0/24 -j NETMAP --to 192.168.2.0/24
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADEJibu lazima lijitafutie njia ya kurudi
Kuandika upya lengo huamua tu pakiti itawasilishwa wapi. Seva ya mbali bado lazima ijibu anwani inayofikia, na hilo linaweza kupangwa kwa njia mbili. Tafsiri chanzo ili majibu yarudi kwenye sanduku lako, au acha chanzo na upe upande wa mbali njia ya masafa ya wateja.
Masquerade upande wa kutoka ni njia fupi: sheria moja katika POSTROUTING na upande wa mbali unaona anwani yako ya handaki, kwa hiyo hauhitaji njia yake. Gharama ni kwamba kila mtumiaji hubanwa kuwa anwani moja, na kumbukumbu kwa kila mtumiaji hazimaanishi kitu tena. Kuacha chanzo kikiwa kizima huhifadhi taarifa hiyo, lakini wakati huo tovuti ya mbali lazima irudishe majibu ya masafa ya wateja kupitia handaki.OpenVPN seva ni push push "route 10.50.9.0 255.255.255.0", pamoja na route 192.168.2.0 255.255.255.0 mstari.
Kosa la gharama ni kufanya nusu ya kila kitu. Ikiwa unafanya masquerade ya sehemu ya trafiki wakati upande wa mbali unabeba pia njia ya kurudi kwa trafiki nyingine, majibu hufika kwenye kiolesura ambapo ingizo la ufuatiliaji wa muunganisho halikuonekana kamwe. Mteja huripoti muda umeisha kwa ombi ambalo seva ilirekodi kama limehudumiwa. Mielekeo yote miwili ya mtiririko lazima ipite katika netfilter instance moja: lango moja hutafsiri, si firewall mbili kwa mfululizo.
conntrack -L -d 10.50.1.17
iptables -t nat -L PREROUTING -v -nSoma ingizo kwa mielekeo yote miwili: tuple ya awali huhifadhi jina lako la utani kwenye lengo, wakati tuple ya jibu hubeba anwani halisi. Ikiwa tuple ya jibu haipo, tatizo ni njia ya kurudi, si sheria. Ikiwa vihesabu vya PREROUTING havijawahi kusogea, pakiti halijawahi kufikia hook hilo.
Migongano na utafutaji unaoendeshwa kwanza
Masafa mawili tofauti yanaweza kugongana, na hitilafu zote mbili zinaonekana kama handaki lililovunjika badala ya sheria mbaya. Jina la utani unalobuni lazima lisiwe limetumika katika njia yote, na masafa halisi ya mbali hayapaswi kuwa tayari yapo kwenye mtandao wako. Nakala hurudisha trafiki ya vipindi kwa mwenyeji asiye sahihi, ambayo ni vigumu zaidi kuchunguza kuliko muunganisho uliokataliwa. Uliza jedwali la njia kabla ya kuongeza sheria.
Kwenye lango, ip route get 192.168.2.17 inapaswa kutaja kifaa cha handaki; daraja la ndani linamaanisha masafa ya mbali yamefichwa na hakuna sheria ya nat itakayoirekebisha. Ikiwa mtandao wako tayari unatumia 192.168.2.0/24, namba upya tovuti ya mbali badala ya kufanya urambazaji juu ya mgongano.
Kuijaribu kutoka kwa mteja halisi, kisha kuihifadhi
Jaribu kutoka kwa mashine ambayo itatumia jina la utani kweli, si kutoka kwenye lango, kwa sababu trafiki inayozalishwa ndani haipiti PREROUTING kwa njia ile ile kamwe. Fungua muunganisho kwa mwenyeji mmoja mwenye jina la utani na uangalie vihesabu na ingizo la conntrack vikitokea pamoja, kisha funga na uthibitishe kuwa ingizo linaondoka. Ingizo lililopitwa na wakati linaonyesha muunganisho uliofunguliwa nusu, ambayo kwa kawaida inamaanisha jibu halikurudi kamwe.
curl -sv http://10.50.1.17/ -o /dev/null
ss -tn dst 10.50.1.17
conntrack -L -d 10.50.1.17Muunganisho miwili au mitatu iliyofanikiwa huthibitisha hesabu, lakini haisemi chochote kuhusu uthabiti au kuhusu mhandisi anayefuata. Hifadhi sheria mahali ambapo mchakato wa kuwasha huzisoma, ambayo kwenye Debian na Ubuntu inamaanisha iptables-save > /etc/iptables/rules.v4 huku netfilter-persistent ikiwashwa. Urambazaji unaotoweka kwenye kuwasha upya ni mbaya kuliko kutokuwa nao, kwa sababu hitilafu huja bila mabadiliko ya hivi karibuni ya kulaumu.
Acha kumbukumbu kando ya sheria: masafa ya jina la utani, masafa halisi, sababu ya jozi na upande gani unaweza kuanzisha. Kumbukumbu hiyo hutenganisha muundo na rundo la sheria ambazo hakuna mtu anayethubutu kuzifuta. Pia hutatua swali la baadaye, wakati tovuti ya mbali inaongeza mwenyeji na anwani ambayo hakuna mtu aliyesanisha tayari inajibu. Ikiwa kumbukumbu inasema upande wa mbali unahitaji njia ya kurudi, mtu anayefuata anajua kuwa kuondoa sheria ya masquerade huvunja muunganisho. Nyaraka ni za bei nafuu hapa; kugundua tena utegemezi wa NAT saa tatu usiku sivyo.