eth0:0 është etiketë, jo pajisje: rregullo përputhjen SNAT
Një numërues në zero do të thotë që rregulli emërton një ndërfaqe që nuk mund të ekzistojë. Lexo pajisjen e vërtetë, rregullo përputhjen -o dhe më pas zgjidh me qëllim adresën e përkthyer.
Një rregull NAT që duhej t'i jepte një grupi klientësh VPN adresën e vet publike qëndron në zero paketa, ndërsa i njëjti grup vazhdon të dalë me burimin e gabuar. Rregulli zakonisht nuk gabon në adresë; gabon në ndërfaqe. -o eth0:0 tregon një pajisje që nuk ekziston, sepse eth0:0 është një etiketë e lidhur me një adresë në eth0. Të shikosh numëruesit është mënyra më e shpejtë për ta vërtetuar, dhe rregullimi është më i vogël se sa sugjeron hetimi.
Kontrollo si e quan kernel-i pajisjen
Lexo të dyja pamjet veçmas përpara se të ndryshosh ndonjë gjë:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
Lista e lidhjeve tregon ndërfaqet. Lista e adresave mund të tregojë një adresë të dytë IPv4 që mban etiketën eth0:0, dhe pajisja për atë adresë është ende eth0. Manuali i adresave i iproute2 e trajton etiketën si emër të adresës, jo si lidhje të dytë, dhe pikërisht ky dallim qëndron në themel të gjithë problemit.
Historia e shpjegon konfuzionin. Sintaksa e vjetër ifconfig eth0:0 me të vërtetë dukej si një ndërfaqe e re, dhe skriptet e asaj kohe ende i referohen një të tillë. Në një sistem të sotëm, alias-i është një etiketë mbi një adresë, dhe asgjë në rrugën e routing-ut ose netfilter nuk e trajton si pikë daljeje të veçantë.
Kontrollo me çfarë u përputh rregulli në të vërtetë
Lexo numëruesit bashkë me listën e rregullave, jo nga kujtesa:
iptables -t nat -L POSTROUTING -v -n --line-numbers
Një rregull numëruesi i paketave të të cilit mbetet në zero ndërsa rrjedh trafik që përputhet nuk vlerësohet, dhe një kusht i ndërfaqes së daljes që emërton eth0:0 është një shkak i zakonshëm. Pajisja e daljes që zgjodhi rruga është eth0, pra një kusht që kërkon një emër tjetër nuk bëhet kurrë i vërtetë, cilindo adresë burimi që zgjodhi kernel-i.
Ndrysho kushtin në pajisjen e vërtetë dhe lëre etiketën jashtë. Nëse duhet të dallosh dy grupe klientësh që ndajnë atë pajisje, dalloji sipas prefiksit të burimit, jo sipas një emri ndërfaqeje që nuk mund të ekzistojë. Dy rregulla me përputhje -s që nuk mbivendosen janë të lexueshme dhe të testueshme; një rregull me pajisje fiktive nuk është as njëra as tjetra. Çdo rregulli jepi një koment që emërton grupin, sepse pas gjashtë muajsh prefiksi i vetëm nuk do t'i thotë askujt pse është aty.
Kontrollo rrugën që zgjodhi pajisjen
NAT postrouting ekzekutohet pasi rruga ka zgjedhur tashmë një ndërfaqe daljeje, pra ndërfaqja në rregull duhet të jetë ajo që zgjodhi rruga. Pyet kernel-in drejtpërdrejt me ip route get për një adresë klienti përfaqësuese dhe lexo si pajisjen ashtu edhe burimin që raporton.
Nëse përgjigja emërton eth0, pjesa e ndërfaqes e rregullit është zgjidhur. Nëse emërton një pajisje tuneli, paketa nuk arrin kurrë rregullin që po redakton, dhe kërkimi kalon në tabelën e routing-ut dhe prioritetet e saj. Një rregull që nuk përputhet kurrë sepse paketa doli diku tjetër duket në daljen e numëruesve njësoj si një rregull me pajisje të shkruar gabimisht. Përpara se të redaktosh ndonjë gjë, konfirmo cilin nga të dy rastet ke, sepse i dyti kërkon ndryshim routing-u dhe jo teksti.
Zgjidh me qëllim burimin e përkthyer
Kur pajisja është e saktë, adresa e burimit është një vendim i veçantë. Ky është vetëm një grup ilustrues IPv4 dhe një adresë shembull:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
Shkrimi i një adrese në --to-source nuk bën që dikush ta routojë atë përsëri drejt teje. Ofruesi i sipërm ose pronari i adresës duhet t'i dorëzojë përgjigjet për atë adresë këtij hosti, dhe adresa duhet të jetë një për të cilën je i autorizuar ta përdorësh. Nëse nuk është, rregulli do të përputhet dhe do të përkthejë, dhe përgjigjet do të shkojnë gjithsesi diku tjetër.
Ndryshimi i adresës së burimit nuk është i njëjtë me ndryshimin e lidhjes së sipërme. Kur kërkesa e vërtetë është një rrugë fizike tjetër, politika e routing-ut duhet të zgjedhë së pari atë rrugë; më pas SNAT rishkruan burimin në pajisjen që zgjodhi politika. Më shumë etiketa në eth0 nuk japin as rrugën as autorizimin.
Verifiko me një lidhje që sapo hape
Hap një lidhje të re klienti në vend që të ripërdorësh një ekzistuese. Ndjekja e lidhjeve mban përkthimin e regjistruar kur filloi rrjedha, kështu që një sesion i vjetër mund të vazhdojë të përdorë adresën e mëparshme të burimit dhe ta bëjë një rregull të ri korrekt të duket i prishur. Shiko numëruesin duke u rritur, pastaj vështro burimin e përkthyer në tel ose në skajin e largët.
Kur disa grupe ndajnë një ndërfaqe, jepi secilit një përputhje të qartë burimi dhe adresën e vet të përkthimit, mbaji në konfigurimin e administruar të firewall-it dhe shëno rendin në të cilin vlerësohen. Pastaj regjistro çfarë verifikove: pajisjen nga ip route get, numëruesin që lëvizi dhe burimin që pa ana e largët. Ai regjistrim i përgjigjet raportit të radhës pa përsëritur konfuzionin e alias-it.