eth0:0 is in label, gjin apparaat: reparearje de SNAT-regel
In teller op nul betsjut dat de regel in ynterface neamt dy't net bestean kin. Lês it echte apparaat, reparearje de -o-oerienkomst en kies dan bewust it oersetten adres.
In NAT-regel dy't ien VPN-klantpoel syn eigen iepenbiere adres jaan moast, stiet op nul pakketten, wylst deselde poel noch altyd ûnder de ferkearde boarne fuortgiet. De regel hat it meastentiids net mis oer it adres; hy hat it mis oer it ynterface. -o eth0:0 ferwiist nei in apparaat dat net bestiet, om't eth0:0 in label is dat oan in adres op eth0 hinget. Nei de tellers sjen is de rapste manier om dat te befêstigjen, en de reparaasje is lytser as it ûndersyk suggerearret.
Kontrolearje hoe't de kernel it apparaat neamt
Lês de twa bylden apart foardat jo wat feroarje:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
De keppellist lit ynterfaces sjen. De adreslist kin in twadde IPv4-adres sjen litte dat it label eth0:0 draacht, en it apparaat foar dat adres is noch altyd eth0. De adresmacht fan iproute2 behannelet it label as in namme foar it adres, net as in twadde keppeling, en dat is krekt it ferskil dêr't it hiele probleem om draait.
De skiednis ferklearret de betizing. De âlde ifconfig eth0:0 syntaks like echt in nij ynterface, en skripts út dy tiid ferwize noch nei ien. Op in hjoeddeisk systeem is de alias in label op in adres, en neat yn it routing- of netfilterpaad behannelet it as in apart útgongspunt.
Kontrolearje wat de regel eins rekke
Lês de tellers mei de regellist ynstee fan út it ûnthâld:
iptables -t nat -L POSTROUTING -v -n --line-numbers
In regel wêrfan't de pakketteller op nul bliuwt wylst passend ferkear floeit, wurdt net beoardiele, en in betingst foar it útgongsynterface dy't eth0:0 neamt is in faak foarkommende oarsaak. It útgongsapparaat dat de rûte keas is eth0, dus in betingst dy't in oare namme siket wurdt nea wier, hokker boarneaadres de kernel ek keas.
Feroarje de betingst nei it echte apparaat en lit it label dêr bûten. As jo twa klantpoelen ûnderskiede moatte dy't dat apparaat diele, ûnderskied se dan op boarneprefiks, net op in ynterfacenamme dy't net bestean kin. Twa regels mei net-oerlappende -s -oerienkomsten binne lêsber en testber; ien regel mei in betocht apparaat is gjin fan beide. Jou elke regel in kommentaar dat de poel neamt, want oer in heal jier sil it prefiks allinnich nimmen fertelle wêrom't it dêr stiet.
Kontrolearje de rûte dy't it apparaat keas
Postrouting-NAT rint neidat de rûte al in útgongsynterface keas, dus moat it ynterface yn de regel datjinge wêze dat de rûte keas. Freegje de kernel direkt mei ip route get foar in represintatyf klantadres en lês sawol it apparaat as de boarne dy't it rapportearret.
As it antwurd eth0 neamt, is it ynterfacepart fan de regel dúdlik. As it in tunnelapparaat neamt, berikt it pakket nea de regel dy't jo bewurkje, en it sykjen ferhuzet nei de routingtabel en syn prioriteiten. In regel dy't nea past om't it pakket earne oars fuortgong, sjocht der yn de tellerútfier itselde út as in regel mei in ferkeard stavere apparaat. Befêstigje hokker fan de twa jo hawwe foardat jo wat bewurkje, want de twadde freget in routingferoaring en net in tekstferoaring.
Kies de oersetten boarne bewust
As it apparaat ienris goed is, is it boarneaadres in aparte beslissing. Dit is allinnich in yllustrative IPv4-poel en in foarbyldadres:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
In adres skriuwe yn --to-source makket net dat immen it werom nei jo rûtelet. De upstream-provider of de adreseigner moat antwurden foar dat adres by dizze host besoargje, en it adres moat ien wêze dy't jo brûke meie. Is it dat net, dan past de regel en oerset, en de antwurden geane noch altyd earne oars hinne.
It boarneaadres feroarje is net itselde as de uplink feroarje. As de echte eask in oar fysyk paad is, moat it routingbelied earst dat paad kieze; SNAT skriuwt dan de boarne oer op hokker apparaat it belied ek keas. Mear labels op eth0 leveret noch de rûte noch de tastimming.
Ferifiearje mei in ferbining dy't jo krekt iepene
Iepenje in nije klantferbining ynstee fan in besteande wer te brûken. Ferbiningsfolging hâldt de oersetting dy't it by de start fan de stream fêstlei, dus in âlde sesje kin it eardere boarneaadres bliuwe brûken en in goede nije regel stikken lykje litte. Sjoch de teller omheech gean en besjoch dan de oersetten boarne op de tried of oan de oare kant.
Jou by ferskate poelen dy't ien ynterface diele, elk in eksplisite boarnematch en syn eigen oersettingsadres, hâld se yn de behearde konfiguraasje fan de firewall en notearje de folchoarder wêryn't se beoardiele wurde. Skriuw dan op wat jo ferifiearren: it apparaat út ip route get, de teller dy't beweegde en de boarne dy't de oare kant seach. Dat ferslach beantwurdet it folgjende rapport sûnder de aliasbetizing te werheljen.