On olemassa useita sivustoja, joiden avulla voit selvittää laitteesi nykyisen IP-osoitteen, kuten https://www.whatismyip.com/ ja https://whatismyipaddress.com/
Hetkinen, miten sivu tietää IP-osoitteeni?
Kysymys on tarkemmin ajateltuna aika hölmö. Vähän kuin tilaisit jotain kotiinkuljetuksella ja ihmettelisit sitten, mistä ne tiesivät osoitteesi. Jotta verkkosivua isännöivä palvelin voi lähettää nettisivun koneellesi, koneesi lähettää oman IP-osoitteensa palvelimelle, jotta palvelin tietää mihin osoitteeseen sivu pitää lähettää.
Nämä nettisivut ovat pelkän IP-osoitteen näyttämisen lisäksi melko monipuolisia. Ne selvittävät osoitteen perusteella myös esimerkiksi tiedon siitä, mikä palveluntarjoaja omistaa osoitteen ja toisaalta GeoIP -tietokannasta saa selvitettyä suunnilleen, mistä päin maailmaa tämä IP-osoite löytyy. Jos siis käyt sivulla ja se jostain syystä näyttää kotikaupunkisi kartalla, huomioi että sijainti ei ole kovinkaan tarkka. Vaikka IP-osoitteet ovat teknisesti lähes mielivaltaisia numerosarjoja, tietyt lukualueet on jaettu eri palveluntarjoajille ja edelleen palveluntarjoaja jakaa ne pienempiin alueellisiin lohkoihin. IP-osoitteet ovat siis jakautuneet ennalta-arvattavasti ympäri maailmaa, mutta eivät kuitenkaan mitenkään pysyvästi. Tämä on myös yksi perustelu VPN-palvelujen käytölle: VPN reitittää liikenteesi jotain muuta reittiä pitkin, jolloin vaikuttaakin siltä, että tietokoneesi olisi toisessa maassa.
Yksinkertaisempi versio
Jos tarkoitus on selvittää pelkkä IP-osoite, varsinkin jonkin tietokoneohjelman avulla, esimerkiksi komentoriviä käyttämällä, on yksinkertaisempiakin sivuja tarjolla. Työkaverini esitteli tänään https://canihazip.com sivun, joka yksinkertaisesti lähettää pelkän IP-osoitteesi sinulle takaisin:

Hyöty on siis erityisesti se, että sivu toimii moitteetta myös komentoriviltä:
$ curl icanhazip.com 123.246.1.342
Ajattelin heti, että tuollaisen voisi varmaan tehdä aika helposti. Pystyisiköhän web-palvelimen jopa säätämään niin, ettei varsinaista sivua olisi olemassa, vaan se vain vastaisi pyyntöösi lähettämällä osoitteesi sinulle takaisin, ja onnistuuhan se.
Nginx-palvelimen asetukset tietylle yksinkertaiselle nettisivulle voisivat näyttää esimerkiksi tältä:
server { root /srv/sivun/tiedostot; index index.html; server_name kivihalme.fi; error_page 404 =200 /index.html; location / { try_files $uri $uri/ =404; } }
Eli, mistä tiedostot löytyy, millä nimellä on index.html
eli etusivu ja mikä palvelun nimi on. Sen jälkeen location -lohko määrittää, että kun osoite (sivun nimen jälkeen) alkaa / -merkillä, kuten kivihalme.fi/blogi
, koitetaan löytyykö palvelimelta blogi
, tai löytyykö blogi/
tai sitten annetaan 404 eli sivua ei löydy.
Kävi ilmi, ettei varsinaisesti tarvitse tehdä edes erillistä sivua: location -lohkossa voi palauttaa suoraan esimerkiksi tekstiä. IP-osoitteen selvittävän verkkopalvelun voi siis “koodata” kokonaan pelkästään asetustiedostoon:
server { server_name ip.kivihal.me; location / { default_type text/plain; return 200 "$remote_addr\n"; } }
Eli, palautetaan tekstiä sellaisenaan. Ei erityisesti mitään tiedostoa, vaan palautetaan asiakaskoneen IP-osoitteen sisältävän $remote_addr
-muuttujan sisältö, ja \n
eli rivinvaihto. Tätä ennen toki määritellään, että koodina on 200, eli “kaikki ok, sivu löytyi”.
Sitten vain säätämään DNS-palveluntarjoajalle uusi tietue ja sivu on pystyssä:
Toki, samalla vaivalla tämän sai tehtyä myös nykyisen nettisivun asetustiedostoon: