NAT noteikums, kam vienam VPN klientu pūlam bija jādod sava publiskā adrese, stāv uz nulles paketēm, kamēr tas pats pūls turpina iziet ar nepareizo avotu. Noteikums parasti nekļūdās adresē; tas kļūdās saskarnē. -o eth0:0 norāda uz ierīci, kuras nav, jo eth0:0 ir birka, kas piesaistīta adresei uz eth0. Skaitītāju aplūkošana ir ātrākais veids, kā to apstiprināt, un labojums ir mazāks, nekā izmeklēšana liek domāt.

Pārbaudiet, kā kodols nosauc ierīci

Pirms kaut ko mainīt, izlasiet abus skatus atsevišķi:

ip link show
ip address show dev eth0
ip route get 203.0.113.20

Saišu saraksts rāda saskarnes. Adrešu saraksts var rādīt otru IPv4 adresi, kurai ir birka eth0:0, un šīs adreses ierīce joprojām ir eth0. iproute2 adrešu rokasgrāmata birkas uzskata par adreses nosaukumu, nevis otru saiti, un tieši šajā atšķirībā ir visa problēma.

Vēsture izskaidro apjukumu. Vecā ifconfig eth0:0 sintakse tiešām izskatījās kā jauna saskarne, un tā laika skripti joprojām uz to atsaucas. Mūsdienu sistēmā aizstājvārds ir birka uz adreses, un nekas maršrutēšanas vai netfilter ceļā to neuzskata par atsevišķu izejas punktu.

Pārbaudiet, kam noteikums patiešām atbilda

Skaitītājus lasiet kopā ar noteikumu sarakstu, nevis no atmiņas:

iptables -t nat -L POSTROUTING -v -n --line-numbers

Noteikums, kura paketes skaitītājs paliek uz nulles, kamēr plūst atbilstoša datplūsma, netiek izvērtēts, un izejas saskarnes nosacījums, kas nosauc eth0:0 ir biežs iemesls. Maršruta izvēlētā izejas ierīce ir eth0, tāpēc nosacījums, kas meklē citu nosaukumu, nekad nekļūst patiess, lai kādu avota adresi kodols izvēlētos.

Nomainiet nosacījumu uz īsto ierīci un atstājiet birku ārpus tā. Ja jums jānošķir divi klientu pūli, kas dala šo ierīci, nošķiriet tos pēc avota prefiksa, nevis pēc saskarnes nosaukuma, kas nevar pastāvēt. Divi noteikumi ar nepārklājošām -s atbilstībām ir lasāmi un pārbaudāmi; viens noteikums ar izdomātu ierīci nav ne viens, ne otrs. Katram noteikumam pievienojiet komentāru, kas nosauc pūlu, jo pēc pusgada prefikss viens pats nevienam nepateiks, kāpēc tas tur stāv.

Pārbaudiet maršrutu, kas izvēlējās ierīci

Postrouting NAT darbojas pēc tam, kad maršruts jau ir izvēlējies izejas saskarni, tāpēc saskarnei noteikumā jābūt tai, ko izvēlējās maršruts. Pajautājiet kodolam tieši ar ip route get reprezentatīvai klienta adresei un izlasiet gan ierīci, gan norādīto avotu.

Ja atbilde nosauc eth0, noteikuma saskarnes daļa ir skaidra. Ja tā nosauc tuneļa ierīci, pakete nekad nesasniedz noteikumu, kuru rediģējat, un meklēšana pāriet uz maršrutēšanas tabulu un tās prioritātēm. Noteikums, kas nekad neatbilst, jo pakete izgāja citur, skaitītāju izvadā izskatās tāpat kā noteikums ar nepareizi uzrakstītu ierīci. Pirms kaut ko rediģēt, apstipriniet, kurš no diviem gadījumiem ir jums, jo otrajam vajadzīga maršrutēšanas, nevis teksta maiņa.

Apzināti izvēlieties tulkoto avotu

Kad ierīce ir pareiza, avota adrese ir atsevišķs lēmums. Šis ir tikai ilustratīvs IPv4 pūls un piemēra adrese:

iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
  -j SNAT --to-source 203.0.113.20

Adreses ierakstīšana --to-source neliek kādam to maršrutēt atpakaļ pie jums. Augšupējam pakalpojumu sniedzējam vai adreses īpašniekam ir jāpiegādā šīs adreses atbildes šim resursdatoram, un adresei jābūt tādai, kuru jums ir atļauts lietot. Ja tā nav, noteikums atbildēs un tulkos, un atbildes tomēr aizies citur.

Avota adreses maiņa nav tas pats, kas augšupējās saites maiņa. Kad īstā prasība ir cits fizisks ceļš, maršrutēšanas politikai vispirms jāizvēlas šis ceļš; pēc tam SNAT pārraksta avotu tajā ierīcē, kuru izvēlējās politika. Vairāk birku eth0 nepiešķir ne maršrutu, ne atļauju.

Pārbaudiet ar tikko atvērtu savienojumu

Atveriet jaunu klienta savienojumu, nevis izmantojiet esošo atkārtoti. Savienojumu izsekošana saglabā tulkojumu, ko tā pierakstīja plūsmas sākumā, tāpēc veca sesija var turpināt lietot iepriekšējo avota adresi un likt pareizam jaunam noteikumam izskatīties salauztam. Vērojiet, kā skaitītājs aug, un tad aplūkojiet tulkoto avotu uz vada vai tālajā galā.

Ja vairāki pūli dala vienu saskarni, katram dodiet skaidru avota atbilstību un savu tulkošanas adresi, turiet tos ugunsmūra pārvaldītajā konfigurācijā un pierakstiet, kādā secībā tie tiek izvērtēti. Pēc tam pierakstiet, ko pārbaudījāt: ierīci no ip route get, skaitītāju, kas kustējās, un avotu, ko redzēja tālā puse. Šis ieraksts atbildēs uz nākamo ziņojumu, neatkārtojot aizstājvārda apjukumu.

Saistītie raksti