Mikko Tuumanen
2018-10-01 14:45:11 UTC
On verkot A ja B. A:n liikennettä ulos mailmalle hoitaa Debian-kone T,
joka nattaa ipv4-liikenteen ja pitää yllä vpn-linkkiä verkkoon B, joka
on kaukana maailmalla.
Verkossa B olevilla laitteilla on vain ipv6-osoitteet. Tätä varten
T:llä on radvd, joka mainostaa ipv6-prefixiä A-verkkoon jolloin A:ssa
olevat laitteet voivat yhdistää ipv6:lla vpn:n kautta B:ssä oleviin
laitteisiin.
Toimii hyvin mutta sitten se iso MUTTA:
Kun radvd mainostaa ipv6-prefixiä, kaikki verkossa A olevat koneet
saavat reititystauluunsa ipv6-oletusreitin T:n kautta, vaikkei
sillä pääsekään muualle kuin verkkoon B.
Useimmiten tämä ei haittaa, esim.
$ time wget -6 -O /dev/null https://google.fi/
--2018-10-01 16:56:59-- https://google.fi/
Selvitetään osoitetta google.fi (google.fi)... 2a00:1450:400f:807::2003
Yhdistetään palvelimeen google.fi (google.fi)|2a00:1450:400f:807::2003|:443... epäonnistui: Verkkoa ei tavoiteta.
real 0m0,051s
user 0m0,016s
sys 0m0,000s
Mutta sitten on registry.npmjs.org:
$ time wget -6 -O /dev/null https://registry.npmjs.org/
--2018-10-01 16:59:50-- https://registry.npmjs.org/
Selvitetään osoitetta registry.npmjs.org (registry.npmjs.org)... 2400:cb00:2048:1::6810:1423, 2400:cb00:2048:1::6810:1023, 2400:cb00:2048:1::6810:1b23, ...
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1423|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1023|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1b23|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1323|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1523|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1123|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1223|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1823|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1923|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1623|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1723|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1a23|:443... epäonnistui: Verkkoa ei tavoiteta.
real 0m8,222s
user 0m0,020s
sys 0m0,000s
Muutaman osoitteen tarkistus tapahtuu nopeasti, mutta sitten
loppuihin osoitteisiin pääsy tarkistetaan jostakin systä
noin sekunnin välein. Tämä hidastaa esim. "npm install":n
todella hitaaksi. Ongelma ei kuitenkaan esiinnyt T:llä, jolla
ei ole oletusreittiä ipv6:lle.
Voiko radvd:llä mainostaa prefixiä siten, että verkossa
olevat laitteet eivät aseta mainostavaa konetta oletusreitiksi
kaikkiin mahdollisiin ipv6-osoitteisiin vaan vain reitiksi
muutamaan eri aliverkkoon? Kokeilin jo asettaa
AdvDefaultLifetime:n nollaksi, mutta silloin laitteet
eivät lisänneet reititystauluunsa reittiä B:hen. Vaikka
radvd.conf:issa oli route bverkonprefix/64 { };
Katsoin pikaisesti tcpdumpilla ja näyttää siltä, että reititinkone
hidastelee ennen kuin palauttaa ICMP6, destination unreachablen.
Onko linuxissa joku oletuksena päällä oleva jarru nopeasti tuleviin
yhteydenavauksiin ja voiko sitä säätää?
joka nattaa ipv4-liikenteen ja pitää yllä vpn-linkkiä verkkoon B, joka
on kaukana maailmalla.
Verkossa B olevilla laitteilla on vain ipv6-osoitteet. Tätä varten
T:llä on radvd, joka mainostaa ipv6-prefixiä A-verkkoon jolloin A:ssa
olevat laitteet voivat yhdistää ipv6:lla vpn:n kautta B:ssä oleviin
laitteisiin.
Toimii hyvin mutta sitten se iso MUTTA:
Kun radvd mainostaa ipv6-prefixiä, kaikki verkossa A olevat koneet
saavat reititystauluunsa ipv6-oletusreitin T:n kautta, vaikkei
sillä pääsekään muualle kuin verkkoon B.
Useimmiten tämä ei haittaa, esim.
$ time wget -6 -O /dev/null https://google.fi/
--2018-10-01 16:56:59-- https://google.fi/
Selvitetään osoitetta google.fi (google.fi)... 2a00:1450:400f:807::2003
Yhdistetään palvelimeen google.fi (google.fi)|2a00:1450:400f:807::2003|:443... epäonnistui: Verkkoa ei tavoiteta.
real 0m0,051s
user 0m0,016s
sys 0m0,000s
Mutta sitten on registry.npmjs.org:
$ time wget -6 -O /dev/null https://registry.npmjs.org/
--2018-10-01 16:59:50-- https://registry.npmjs.org/
Selvitetään osoitetta registry.npmjs.org (registry.npmjs.org)... 2400:cb00:2048:1::6810:1423, 2400:cb00:2048:1::6810:1023, 2400:cb00:2048:1::6810:1b23, ...
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1423|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1023|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1b23|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1323|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1523|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1123|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1223|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1823|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1923|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1623|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1723|:443... epäonnistui: Verkkoa ei tavoiteta.
Yhdistetään palvelimeen registry.npmjs.org (registry.npmjs.org)|2400:cb00:2048:1::6810:1a23|:443... epäonnistui: Verkkoa ei tavoiteta.
real 0m8,222s
user 0m0,020s
sys 0m0,000s
Muutaman osoitteen tarkistus tapahtuu nopeasti, mutta sitten
loppuihin osoitteisiin pääsy tarkistetaan jostakin systä
noin sekunnin välein. Tämä hidastaa esim. "npm install":n
todella hitaaksi. Ongelma ei kuitenkaan esiinnyt T:llä, jolla
ei ole oletusreittiä ipv6:lle.
Voiko radvd:llä mainostaa prefixiä siten, että verkossa
olevat laitteet eivät aseta mainostavaa konetta oletusreitiksi
kaikkiin mahdollisiin ipv6-osoitteisiin vaan vain reitiksi
muutamaan eri aliverkkoon? Kokeilin jo asettaa
AdvDefaultLifetime:n nollaksi, mutta silloin laitteet
eivät lisänneet reititystauluunsa reittiä B:hen. Vaikka
radvd.conf:issa oli route bverkonprefix/64 { };
Katsoin pikaisesti tcpdumpilla ja näyttää siltä, että reititinkone
hidastelee ennen kuin palauttaa ICMP6, destination unreachablen.
Onko linuxissa joku oletuksena päällä oleva jarru nopeasti tuleviin
yhteydenavauksiin ja voiko sitä säätää?