Rézine peut router des IPv4 supplémentaires sur n'importe quel type d'abonnement. Cela permet par exemple de faire de l'auto-hébergement sans devoir se prendre la tête avec des redirections de ports, ou bien de mettre en place un réseau invité avec une IP séparée.

Demande d'IP supplémentaire

Il faut en faire la demande par mail à adminsys chez rezine.org, en justifiant l'usage prévu.

Les adminsys répondront en précisant l'IP supplémentaire attribuée, qui sera alors routée vers le routeur abonné.

Configuration abonné OpenWrt

Il est ensuite nécessaire de faire de la configuration côté abonné : sur le routeur qui reçoit la connexion Internet Rézine, ainsi que sur l'éventuelle machine (serveur auto-hébergé) qui utilisera l'IP publique supplémentaire. On suppose ici que le routeur fonctionne avec OpenWrt ou LEDE.

Méthode 1 : routage de l'IP vers une machine du LAN

C'est le cas le plus courant pour un serveur auto-hébergé : l'IP supplémentaire sera routée vers une machine du réseau local (LAN). Cette machine continuera à faire partie du LAN comme avant, mais elle sera également joignable directement depuis Internet sur sa nouvelle IP publique. C'est la configuration la plus simple à mettre en place.

Sur le routeur

Le principe est de rajouter, sur le routeur, une route statique qui pointe vers la machine du LAN. Il faut également autoriser les connexions entrantes dans le pare-feu (firewall).

On peut configurer le routeur OpenWrt avec l'interface web, cf. captures d'écran :

Ou bien en SSH : ajouter à /etc/config/network la configuration suivante (en adaptant l'IP 193.33.56.XXX) :

config route
    option interface 'lan'
    option target '193.33.56.XXX'
    option gateway '0.0.0.0'

Et dans /etc/config/firewall :

config rule
    option name             Allow-Rezine
    option src              wan
    option dest             lan
    option dest_ip      193.33.56.XXX
    option proto            all
    option family           ipv4
    option target           ACCEPT

Il faut ensuite rebooter ou bien juste recharger la configuration :

# /etc/init.d/network restart
# /etc/init.d/firewall reload

Sur la machine qui utilisera l'IP supplémentaire

Sur la machine, il faut simplement ajouter l'IP publique sur son interface réseau. Cette IP vient en plus de l'IP « normale » de la machine sur le LAN, obtenue par DHCP ou configurée statiquement.

Attention : bien penser à configurer un pare-feu (firewall) sur cette machine pour la protéger des connexions entrantes, et mettre un mot de passe solide pour SSH !

Sous linux, pour ajouter temporairement l'IP publique supplémentaire sur l'interface filaire :

# ip addr add 193.33.56.XXX/32 dev eth0

Consulter la documentation de votre OS pour configurer cette IP supplémentaire de façon permanente. Par exemple sous Debian c'est dans /etc/network/interfaces, ici pour une interface configurée en DHCP sur le LAN :

iface eth0 inet dhcp
    up   ip addr add 193.33.56.XXX/32 dev $IFACE
    down ip addr del 193.33.56.XXX/32 dev $IFACE || true

Note pour les experts

Cette configuration fonctionne pour les cas les plus courants (service SSH ou web en écoute sur le serveur), mais elle souffre d'une limitation pour des usages avancés comme certains VPN, qui s'attendent à avoir une connectivité bidirectionnelle sur cette IP supplémentaires. En effet, avec cette configuration les connexions sortantes de l'IP supplémentaire sont nattés par le routeur, mais pas les connexions entrantes.

Méthode 2 : routage de l'IP sur une interface dédiée

Cette configuration ressemble plus à un scénario de type "DMZ" : la machine qui utilisera l'IPv4 supplémentaire n'est pas sur le LAN, elle est connectée à une interface dédiée sur le routeur. Cette interface peut être une interface physique ou un VLAN.

TODO

Méthode 3 : utilisation de l'IP supplémentaire directement sur le routeur

Avec cette configuration, le routeur lui-même aura deux IPv4 publiques : l'IP « normale » fournie avec l'abonnement Rézine, et l'IP supplémentaire Rézine.

L'intérêt est d'utiliser cette seconde IP publique pour un deuxième réseau local (Wi-Fi ou filaire), par exemple :

  • réseau invité
  • réseau type « DMZ » séparé du LAN, avec des redirections de ports propres

Ajouter l'IP supplémentaire sur le WAN

Repérer l'interface wan dans /etc/config/network et ajouter une nouvelle interface avec le même paramètre ifname et l'IP supplémentaire :

config interface 'wan2'
    option ifname    'ethX'
    option proto     'static'
    option ipaddr    '193.33.56.XXX'
    option netmask   '255.255.255.255'

Grâce à cette astuce, on arrive à avoir une seule interface physique (ethX, le port WAN) qui obtient à la fois une IP publique en DHCP et une IP publique configurée statiquement.

Ajouter un nouveau réseau local

Cette partie dépend du besoin (réseau invité, DMZ, ...), donc on appellera ici ce nouveau réseau lan2.

Rajouter la configuration du nouveau réseau :

config interface 'lan2'
    option type      'bridge'
    option proto     'static'
    option ipaddr    '192.168.42.1'
    option netmask   '255.255.255.0'

Il est possible de rajouter une interface filaire à ce réseau avec l'option ifname. Pour les interfaces Wi-Fi, ça se fait plutôt dans /etc/config/wireless, par exemple :

config wifi-iface
    option device      'radio0'
    option network     'lan2'
    option mode        'ap'
option ssid        'mon_reseau_wifi'
option encryption  'mixed-psk'
option key         'mon_mot_de_passe'

En outre, il faut aussi ajouter un service DHCP dans /etc/config/dhcp :

config dhcp 'lan2'
    option interface 'lan2'
    option start '10'
    option limit '200'
    option leasetime '1h'

Configuration du firewall

On arrive à la partie la plus importante, le firewall.

Il faut d'abord définir une nouvelle zone :

config zone
    option name        lan2
    list   network     lan2
    option input       ACCEPT
    option output      ACCEPT
    option forward     ACCEPT

La règle permettant d'utiliser l'IP supplémentaire en sortie est la suivante :

config redirect
    option dest         wan
    option src_ip       '192.168.42.0/24'
    option src_dip      193.33.56.XXX
    option proto        all
    option family       ipv4
    option target       SNAT

Ici, src_ip est la plage d'adresse du nouveau réseau local, et src_dip est l'IP supplémentaire Rézine.

Test

Tout relancer :

# /etc/init.d/network reload
# /etc/init.d/firewall restart
# /etc/init.d/dnsmasq reload

Normalement les appareils connectés sur le nouveau réseau devraient avoir accès à Internet avec l'IP supplémentaire ! Il est possible de vérifier avec un site comme https://ipof.me/.

Note sur les redirections de ports

Attention, avec cette configuration un peu exotique, toutes les redirections de ports s'appliquent par défaut aux deux IP publiques. Pour préciser sur quelle IP publique on veut appliquer la redirection de ports, il faut renseigner le paramètre src_ip, par exemple :

config redirect
    option name             SSH-monlaptop
    option src              wan
    option src_ip           193.33.56.XXX
    option proto            tcp
    option dest             lan
    option dest_ip          192.168.1.56
    option dest_port        22

config redirect
    option name             SSH-monserveur
    option src              wan
    option src_ip           193.33.56.YYY
    option proto            tcp
    option dest             lan2
    option dest_ip          192.168.42.100
    option dest_port        22