Hetzner ajouter une ipv4 à un VPS

Nixos : Ajouter une nouvelle IPV4 à un VPS Hetzner

J'utilise Hetzner pour un petit VPS, pour ce blog, un git et quelques bricoles.

Hetzner propose de sepasser d'IPV4 et d'avoir qu'une IPV6.

Il est possible d'avoir une IPV4, mais c'est plus cher de quelques centimes. C'etait donc l'occasion de tester le full IPV6.

La réalité, c'est que tous ne sont pas prêt. Certains projets sont incompatible avec les IP v6 et plus exactement avec les ::: que l'on va retrouver. Bien souvent il existe des moyens de contournement (enregistrement DNS par exemple), mais parfois, on va avoir besoins de s'adresser à un service IPV4 only, et là, c'est la merde.

J'ai donc opté, par l'ajout d'une IPV4 à mon VPS.

Comment ça se passe sous Nixos ? Souvenez vous, j'avais utilisé nix-infect pour passer mon VPS sous Nixos.

De quoi avons nous besoins ?

En terme de code, ça donne ça :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{ lib, ... }: {
  # This file was populated at runtime with the networking
  # details gathered from the active system.
  networking = {
    nameservers = [ "2a01:4ff:ff00::add:2"
 "2a01:4ff:ff00::add:1"
 "185.12.64.1"
 ];
    defaultGateway = {
      address = "172.31.1.1";
      interface = "eth0";
      };
    defaultGateway6 = {
      address = "fe80::1";
      interface = "eth0";
    };
    dhcpcd.enable = false;
    usePredictableInterfaceNames = lib.mkForce false;
    interfaces = {
      eth0 = {
        ipv4.addresses = [
          { address="65.108.157.54"; prefixLength=32; }
        ];
        ipv6.addresses = [
          { address="2a01:4f9:c012:a658::1"; prefixLength=64; }
      { address="fe80::9400:4ff:fe26:7f9f"; prefixLength=64; }
        ];
    ipv4.routes = [ { address = "172.31.1.1"; prefixLength = 32; } ];
        ipv6.routes = [ { address = "fe80::1"; prefixLength = 128; } ];
      };
    };
  };
  services.udev.extraRules = ''
    ATTR{address}=="96:00:04:26:7f:9f", NAME="eth0"

  '';
}

Le diff du fichier :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
diff --git a/networking.nix b/networking.nix
index 6064061..bf1e12b 100644
--- a/networking.nix
+++ b/networking.nix
@@ -4,11 +4,12 @@
   networking = {
     nameservers = [ "2a01:4ff:ff00::add:2"
  "2a01:4ff:ff00::add:1"
+ "185.12.64.1"
  ];
     defaultGateway = {
-      address = "fe80::1";
+      address = "172.31.1.1";
       interface = "eth0";
-    };
+      };
     defaultGateway6 = {
       address = "fe80::1";
       interface = "eth0";
@@ -18,16 +19,15 @@
     interfaces = {
       eth0 = {
         ipv4.addresses = [
-          { address="100.66.241.88"; prefixLength=32; }
+          { address="65.108.157.54"; prefixLength=32; }
         ];
         ipv6.addresses = [
           { address="2a01:4f9:c012:a658::1"; prefixLength=64; }
-{ address="fe80::9400:4ff:fe26:7f9f"; prefixLength=64; }
+         { address="fe80::9400:4ff:fe26:7f9f"; prefixLength=64; }
         ];
-        ipv4.routes = [ { address = ""; prefixLength = 32; } ];
+       ipv4.routes = [ { address = "172.31.1.1"; prefixLength = 32; } ];
         ipv6.routes = [ { address = "fe80::1"; prefixLength = 128; } ];
       };
-
     };
   };
   services.udev.extraRules = ''
Généré avec Hugo
Thème Stack conçu par Jimmy