Rézine peut router des IPv4 supplémentaires sur les abonnements de type FTTO, Radio et tunnels. 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 courriel à 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.
Attention, après cette configuration, le serveur auto-hébergé sera joignable directement depuis Internet, sans pare-feu. Il est donc nécessaire de mettre un pare-feu sur la machine elle-même si cela est nécessaire.
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) pour que l'IP supplémentaire soit accessible depuis Internet sans filtrage.
On peut configurer le routeur OpenWrt avec l'interface web, cf. captures d'écran :
- Menu "Network", "Static routes"
- Ajouter une route sur "lan" avec l'IP supplémentaire Rézine, et gateway "0.0.0.0"
- Menu "Network", "Firewall"
- Onglet "Traffic Rules"
- "New forward rule" de "wan" à "lan"
- Destination = l'IP, tous les protocoles
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 redémarrer ou bien seulement 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émentaire. En effet, avec cette configuration, les connexions sortantes sont NATées par le routeur, mais pas les connexions entrantes.
Méthode 2 : routage de l'IP sur une interface dédiée (DMZ)
Cette configuration met en place un scénario de type DMZ (zone démilitarisée, en anglais) : 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. Ainsi, elle ne peut utiliser que son IP publique, et n'a pas accès au reste du LAN.
Sur le routeur
Commencer par isoler un port physique du routeur pour le placer dans la DMZ. La configuration exacte dépend du modèle de routeur et de la version d'OpenWrt. Elle peut être faite via l'interface web ou en SSH.
Voilà un exemple de configuration via SSH, avec le VLAN 1 qui est déjà configuré
pour le LAN. On rajoute un nouveau VLAN 5 pour la DMZ, configuré sur le port n°2.
Les ports n°3, 4, et 5 restent dans le VLAN 1. La configuration correspondante
dans /etc/config/network
est la suivante :
config switch_vlan
option device 'switch0'
option vlan '5'
option ports '2 0t'
config switch_vlan
option device 'switch0'
option vlan '1'
option ports '3 4 5 0t'
Il faut ensuite rajouter une interface logique pour la DMZ, rattachée à l'interface
eth0.5
(VLAN 5 sur eth0, à adapter selon le routeur). On lui donne une IP « semi-privée »
en 100.100.100.100
pour servir de passerelle au serveur DMZ. Puis on route l'IP supplémentaire vers cette DMZ. Ça se passe de nouveau dans /etc/config/network
:
config interface 'dmz'
option proto 'static'
option ifname 'eth0.5'
option ipaddr '100.100.100.100'
option netmask '255.255.255.255'
config route
option interface 'dmz'
option target '193.33.56.XXX'
option gateway '0.0.0.0'
Recharger la configuration réseau :
# /etc/init.d/network reload
Enfin, il faut déclarer une nouvelle zone de pare-feu, et autoriser le trafic entre les différentes zones :
- WAN vers DMZ : pour l'accès depuis Internet vers la DMZ ;
- DMZ vers WAN : pour que la machine en DMZ ait accès à Internet en sortie ;
- LAN vers DMZ : pour que les machines du LAN aient accès au serveur.
En revanche, on n'autorise pas le trafic de la DMZ vers le LAN, pour des raisons de sécurité. Techniquement, c'est bien sûr possible d'autoriser ce trafic de la même façon si désiré.
La configuration du pare-feu se fait dans /etc/config/firewall
:
config zone
option name 'dmz'
list network 'dmz'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config forwarding
option src 'wan'
option dest 'dmz'
config forwarding
option src 'dmz'
option dest 'wan'
config forwarding
option src 'lan'
option dest 'dmz'
Recharger la configuration avec :
# /etc/init.d/firewall reload
Dernier point optionnel : si le serveur en DMZ est joignable via un nom DNS toto.example.com
,
on peut rajouter cette entrée DNS en dur dans le routeur. Ainsi, même
si on perd la connexion à Internet, le serveur sera toujours joignable
avec son nom DNS depuis les machines du LAN.
Rajouter une entrée à /etc/hosts
:
193.33.56.XXX toto.example.com
Puis relancer le résolveur DNS :
# /etc/init.d/dnsmasq reload
Sur la machine qui utilisera l'IP supplémentaire
Il faut configurer la machine avec une IP statique et une route par défaut
via 100.100.100.100
. Attention, certains systèmes ne supportent pas nativement
une telle route par défaut.
Sous Debian, la configuration dans /etc/network/interfaces
ressemblera à :
auto ensXX
iface ensXX inet static
address 193.33.56.XXX/32
up ip route add default via 100.100.100.100 dev $IFACE onlink || true
down ip route del default via 100.100.100.100 dev $IFACE onlink || true
Configurer également le résolveur DNS dans /etc/resolv.conf
:
nameserver 100.100.100.100
Test
Recharger les différentes configurations si ce n'est pas déjà fait :
# /etc/init.d/network reload
# /etc/init.d/firewall reload
# /etc/init.d/dnsmasq reload
Tester que la machine en DMZ a bien accès à Internet.
Pour tester le trafic entrant, il faut se mettre sur un autre réseau et tester par exemple de se connecter en SSH sur l'IP publique supplémentaire.
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 sa propre IP publique, tout en gérant les redirections de ports sur le routeur.
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 pare-feu
On arrive à la partie la plus importante, le pare-feu.
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