Connaître l’adresse IP publique de votre Livebox
Je suis chez Orange et mon adresse IPv4 est amené à changer régulièrement, selon une cadence que j’ignore totalement. J’ai activé une prise de contrôle à distance de mon PC via OpenSSH (uniquement par clé) et Terminal Services. J’ai d’ailleurs changé les ports de ces deux services de manière à minimiser les risques d’intrusion ! ;+)
Les Services de type DynDNS
La LiveBox d’Orange propose d’utiliser différents services de type DynDNS :
- dyndns, hélas payant
- No-IP, qui vous oblige à recommencer tous les 30 jours
- DtDNS, gratuit, qui semble accessoirement dans les choux
- Change IP, payant
- DNSdynamic, gratuit, dont j’attends encore la propagation de mon entrée DNS
Bref, rien ne me convient et, pour tout dire, je n’ai absolument pas envie de payer ce genre de services !
Le registrar pour l’IPv6
Comme les IPv6 fournies par Orange sont fixes, j’ai utilisé la zone DNS de mon domaine DSFC hébergé chez Gandi, en lui ajoutant une entrée de type AAAA.
DynDNS, un script PowerShell pour l’IPv4
Le script que je vous propose ci-dessous envoie votre adresse IP par mail. Il recourt à des API publiques qui vous permettent de récupérer votre adresse IPv4 ou IPv6 publique, au format JSON pour la plupart. Je vous recommande de choisir des services en mode https.
Clear-Host $ip=(Invoke-RestMethod -Uri 'https://ipinfo.io').ip <# #Ipv4 only $ip=(Invoke-RestMethod -Uri 'https://api.ipify.org?format=json').ip $ip=Invoke-RestMethod -Uri 'https://ipv4bot.whatismyipaddress.com' $ip=(Invoke-RestMethod -Uri 'http://api.ipaddress.com/myip?format=json&callback=myCallback').ipaddress $ip=(Invoke-RestMethod -Uri 'http://ip-api.com/json').query #IPv6 only $ip=(Invoke-WebRequest -Uri 'https://ipv6bot.whatismyipaddress.com').content #IPv4 or IPv6 $ip=(Invoke-WebRequest -Uri 'https://www.dsfc.net/ipinfo.php').content #> $CredUser = "votre_login" $CredPassword = "votre_mot_de_passe" $EmailFrom = "votre_login@gmail.com" $EmailTo = "votre_login@gmail.com" $Subject = "IPv4=$ip" $Body = "IPv4=$ip" $SMTPServer = "smtp.gmail.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) $SMTPClient=$null Exit
J’ai ensuite planifié ce script pour qu’il s’exécute au moins une fois tous les jours.
ipinfo.php, un script PHP
Sur mon serveur, j’ai même écrit un script PHP, vous permettant d’obtenir votre IP publique :
<?php echo $_SERVER['REMOTE_ADDRESS']; ?>