Kaksi VPN-asiakasta voi poistua kahden eri julkisen IPv4-osoitteen kautta, ja sen tekevä sääntö on lyhyempi kuin useimmat odottavat. Sitä ei saa toimimaan iptablesin syntaksi vaan paketin tila, kun se saapuu lähtöketjuun: siellä olevan lähdeosoitteen on edelleen erotettava asiakkaat toisistaan. Jos aiempi masquerade on jo yhdistänyt molemmat yhteen osoitteeseen, mikään asiakaskohtainen sääntö ei voi palauttaa eroa. Ratkaise tämä kysymys ensin ja kirjoita sitten käännös.

Mikä identiteetti säilyy yhdyskäytävälle

Sääntö täsmää paketin lähdeosoitteeseen, ei VPN-käyttäjänimeen eikä nimeen, jonka asiakasohjelma näyttää. Kaikki, mikä kääntää pakettia aiemmin reitillä, määrää, mitä sääntösi voi vielä nähdä. Aja nat-taulu järjestyksessä ja etsi kohta, jossa lähde on vielä asiakaskohtainen.

iptables -t nat -S POSTROUTING

Lue lista ylhäältä. Yläpäässä oleva masquerade-sääntö kirjoittaa lähteen uudelleen jokaiselle täsmäävälle virralle, ja sen jälkeen sijoitettu asiakaskohtaiset merkinnät täsmäävät osoitteeseen, jota ei enää ole. Kun kaksi LAN-laitetta jakaa yhden tunnelin ja saapuvat yhtenä sisäisenä osoitteena, suunnittelun on muututtava ennen palomuuria: pidä niiden lähdealueet erillään tai anna kummallekin oma sisäinen osoite.

Sido sisäisen osoitteen jako todennettuun asiakkaaseen. Osoitteen antaminen toiselle laitteelle luovuttaa myös lähtökäytännön, eikä lähdekäännös yksinään ole identiteettitodiste.

Käännös ei voi keksiä osoitetta

Jokainen julkinen osoite on osoitettava tai reititettävä tähän lähtöpisteeseen, ja vastausten on löydettävä tiensä takaisin sinne. Sääntö, joka lähettää liikennettä osoitteesta, johon kukaan ei reititä takaisin, pudotetaan kaukopäässä tai siihen vastataan isännälle, joka ei koskaan pyytänyt sitä. Pilvipalveluntarjoajan instanssilla on yleensä julkinen osoite käännetty yksityisen rajapinnan osoitteeksi ennen kuin paketti lähtee, joten SNAT-lähteen on oltava osoite, jonka tarjoaja hyväksyy, ei arvo, jonka konsoli näyttää. Lue tarjoajan osoitemalli ja noudata sitä sen sijaan, että kopioit julkisen arvon jokaiseen pakettiin.

Käytännössä se tarkoittaa reititetyn etuliitteen tarkistamista tarjoajan konsolissa ennen palomuurin koskemista ja yksityisen rajapinnan osoitteen käyttämistä käännöslähteenä, kun kohdistus on yksi yhteen. Alla olevissa esimerkeissä käytetyt osoitteet tulevat dokumentaatioalueilta, joten ensimmäinen korvattava asia on itse osoiteteksti.

Lisää ennen yleistä masquerade-sääntöä

Vahvista lähtörajapinta ja nykyinen ketju ennen mitään lisäystä. Ensimmäinen päättää, mihin paketteihin sääntö voi täsmätä, ja toinen näyttää, mikä seisoo jo sen edessä.

ip -4 route show default
iptables -t nat -L POSTROUTING -n -v --line-numbers

Ensimmäinen komento nimeää rajapinnan, jonka kautta internetiin menevä paketti todella lähtee. Toinen tulostaa ketjun rivinumeroineen. Yleinen masquerade-merkintä on rivi, jonka yläpuolelle on jäätävä.

iptables -t nat -I POSTROUTING 1 -s 10.88.4.20/32 -o ens3 -j SNAT --to-source 198.51.100.77
iptables -t nat -I POSTROUTING 1 -s 10.88.4.21/32 -o ens3 -j SNAT --to-source 198.51.100.78

Yllä olevat kaksi sääntöä täsmäävät kumpikin yhteen sisäiseen osoitteeseen, rajaavat täsmäyksen lähtörajapintaan ja asettavat lähteen nimenomaisesti. Lisää sen sijaan että liittäisit: kohdassa 1 ne arvioidaan ennen masquerade-riviä. Niiden välinen järjestys ei ole merkityksellinen, koska niiden lähteet eroavat. Korvaa ens3 sillä, minkä reittikomento ilmoitti, ja pidä muut palomuurinhallintaohjelmat poissa samoista koukuista, sillä kahden työkalun kirjoittama yksi taulu on tavallinen syy siihen, ettei oikealla säännöllä ole vaikutusta.

Todista lähde uudella virralla

Stateful NAT sitoo käännöksen virran alkaessa ja käyttää sitä uudelleen myöhemmille paketeille, joten ennen muutosta avattu istunto säilyttää vanhan lähteensä muutoksen jälkeen. Vain äskettäin aloitettu yhteys todistaa säännön.

conntrack -L -s 10.88.4.20 -p tcp --dport 443

Lue kyseisen merkinnän vastaussuunta: sen kohde on osoite, jonka etäpää näkee lähteenä. Vertaa sitä aiottuun julkiseen osoitteeseen ja pidä vanhan osoitteen sisältävää merkintää todisteena liian aikaisin alkaneesta virrasta, ei rikkinäisestä säännöstä. Pyydä asiakasta avaamaan uusi yhteys ja toista sitten kysely. Koko seurantataulun tyhjentäminen testin pakottamiseksi keskeyttää kaikki muut istunnot yhdyskäytävällä.

Käännös ei edelleenkään valitse reittiä, päästä virtaa suodattimen läpi eikä julkaise saapuvaa palvelua. Väärä reitti ja puuttuva sallintasääntö jatkavat epäonnistumista täydellisen SNAT-säännön jälkeenkin. Tarkista myös IPv6 ja mikä tahansa toissijainen lähtöpolku ja kirjaa sitten sisäinen-julkinen-parit palomuurin dokumentaatioon, jotta seuraava muutos alkaa kohdistuksesta eikä säännön tekstistä.

Aiheeseen liittyvät artikkelit