Séparer l'entrant du sortant
Mettre plusieurs sites sur une machine est une question distincte de la répartition des adresses. Cette note traite deux choses : sur quelle ligne de la liste arrive une requête, et par quelle ligne la machine sort quand elle ouvre elle-même une connexion.
La console découpe les adresses en lignes. La première sert à SSH ou RDP. Chaque autre ligne est une IPv4 achetée seule, pas une place libre dans un sous-réseau. Pour poser chaque ligne sur la carte et la garder après redémarrage, suivez ajouter chaque IPv4 sur la carte, puis attribuez les lignes aux sites.
L'entrant suit le DNS et l'adresse d'écoute. Le client se connecte à la ligne nommée par l'enregistrement A. Un programme qui n'écoute que la première ligne ne répond pas au même port sur une autre ligne.
Le sortant dépend de qui a ouvert la connexion. Après qu'un client s'est connecté à une ligne donnée, les réponses de cette session repartent par cette ligne. Une connexion que la machine ouvre elle-même — une mise à jour, un appel d'API, un courrier sortant — utilise la première ligne, celle de la route par défaut, si le programme ne choisit pas d'adresse locale.
Plusieurs sites partagent la première ligne
Quand chaque site est un site web sur les ports 80 et 443, et que le nom d'hôte suffit à les distinguer, pointez-les tous vers la première ligne. Un nouveau nom ne demande pas une nouvelle adresse.
Chaque nom a un enregistrement A, et chaque valeur est la première ligne. Le service web écoute 0.0.0.0 port 443, ou seulement le port 443 de la première ligne. Le nom d'hôte choisit le répertoire et le certificat. Les certificats suivent le nom, pas le nombre de lignes. Sur une ligne partagée, SNI sépare les certificats sur le même port.
server {
listen 443 ssl;
server_name a.example;
}
server {
listen 443 ssl;
server_name b.example;
}
Aucun des deux blocs ne fixe d'adresse : les deux écoutent toutes les adresses de cette carte, puis se séparent par server_name. En passant à listen 203.0.113.10:443 ssl, seul le port 443 de la première ligne entre. Le port 443 d'une adresse supplémentaire n'entre pas dans ces blocs.
IIS fait la même séparation avec un en-tête d'hôte. Liez l'IP à la première ligne, ou à Toutes non attribuées, mettez chaque domaine dans le nom d'hôte, et gardez le port 443. Un nouveau site est une nouvelle liaison et un nouvel enregistrement A, pas une nouvelle ligne d'adresse.
Deux programmes ne peuvent pas posséder en même temps le même port sur la même ligne. La seconde liaison échoue. Quand un service doit posséder ce port, déplacez-en un sur une autre ligne, comme dans la section suivante.
Un site occupe une ligne
Séparez par ligne dans les cas suivants. Le critère est le port et l'adresse source, pas le nombre de sites en soi.
Deux processus ont besoin du même port et ne peuvent pas se distinguer par le nom d'hôte. Deux écouteurs qui exigent chacun le port 25, ou le même port personnalisé, en sont le cas courant. Une ligne n'a qu'un écouteur sur ce port. Le second processus va sur la ligne suivante.
Un service dont l'enregistrement A doit être sa propre adresse, différente des autres sites, pointe ce nom vers une autre ligne de la liste. Le processus écoute cette ligne, ou 0.0.0.0 pour l'inclure.
Le courrier sortant, un rappel ou un appel d'API doit apparaître comme une ligne choisie, pas comme la première. Cette ligne doit déjà être sur la carte, et le programme doit lier son adresse locale dessus. Changer seulement l'enregistrement A ne change pas la source d'une connexion que le programme ouvre.
server {
listen 203.0.113.10:443 ssl;
server_name a.example;
}
server {
listen 203.0.113.21:443 ssl;
server_name b.example;
}
203.0.113.10 et 203.0.113.21 sont des adresses de documentation. Remplacez-les par deux lignes de la liste. Le premier bloc n'accepte que la première ligne, le second que la ligne supplémentaire. Les deux lignes doivent déjà être en /32 sur la carte. L'enregistrement A de b.example est 203.0.113.21, pas la première ligne.
Un programme qui écoute 0.0.0.0 répond aussi aux lignes ajoutées ensuite. Si un site ne doit apparaître que sur une ligne, écrivez cette ligne dans listen et ne laissez pas 0.0.0.0. À l'inverse, un programme lié seulement à la première ligne ne répond pas à une ligne ajoutée après.
Quand l'adresse est donnée à une machine virtuelle, la ligne n'existe que sur la carte de l'invité. Ne la configurez pas aussi sur le pont ou le port physique de l'hôte. Quand le site tourne sur l'hôte, laissez la ligne sur l'interface qui porte déjà la première adresse.
Ce tableau décide combien en acheter
La première ligne incluse compte comme une adresse que l'on peut attribuer. Chaque adresse supplémentaire qui doit être occupée seule est une IPv4 en plus. Les noms qui partagent la première ligne n'augmentent pas le compte.
| Ce qu'il faut faire | Où vont les adresses | Suppléments |
|---|---|---|
| Plusieurs sites web sur 80/443, séparés par le nom | Chaque enregistrement A pointe vers la première ligne | 0 |
| Quatre sites web, chacun avec son enregistrement A et sa ligne | La première ligne pour l'un, une ligne chacun pour les autres | 3 |
| Les sites web partagent la première ligne, deux autres services ont besoin de leur adresse | Les sites restent sur la première ligne, chaque service une ligne | 2 |
| Deux processus sur le même port, non séparables par le nom | Chacun écoute sa ligne | Au moins 1 |
Quatre sites web qui peuvent partager une adresse demandent zéro supplément. Quatre sites qui doivent chacun avoir une ligne en demandent trois. Avec l'adresse incluse, la liste a quatre lignes. N'achetez pas « à peu près un /29 » parce qu'il y a quatre sites. Un /29 est la notation d'un bloc de huit adresses. Ici les adresses ne se vendent pas en bloc, et il n'y a ni adresse réseau ni broadcast à configurer.
Chaque adresse supplémentaire coûte $1.6 par mois, jusqu'à 255 de plus, et le total avec l'adresse incluse reste dans 256. Cinq suppléments font $8.0 par mois. Ajoutez cela au loyer mensuel, puis multipliez par le nombre de mois de la période. Mensuel multiplie par 1, trimestriel par 3, semestriel par 6, annuel par 12. Aucune période n'est remise.
Le palier 128GB est à $454.8 par mois, le 256GB à $612.7. La mémoire est de la DDR4-3200 ECC RDIMM et ne s'ajoute pas après commande. Le processeur est un AMD EPYC 7543P, 32 cœurs et 64 threads, de 2,8 à 3,7 GHz. La paire par défaut est deux NVMe de 1TB, chacun en accès direct, sans RAID matériel, la capacité utile est la somme, environ 2TB. La bande passante commence à 250 Mbps, sans plafond de trafic. 1 Gbps ajoute $245.0 par mois, 2 Gbps ajoute $742.7. Il n'y a pas de frais d'installation. La machine est déployée à Tokyo, au Japon. Linux utilise SSH, Windows RDP. Les deux commandes n'écrivent que la première ligne.
Saisissez le nombre de ce tableau sur la page de configuration. Zéro signifie que chaque site partagé utilise la ligne incluse. Ajouter un répertoire de site, sans changer le port ni l'adresse source, n'augmente pas le nombre supplémentaire.
Les nouvelles connexions partent encore de la première ligne
La route par défaut est écrite à l'installation avec la première ligne. Les adresses ajoutées ensuite en /32 sont, sous Linux, des adresses secondaires de la même interface. Quand un programme crée une socket et ne choisit pas d'adresse locale, le noyau sélectionne la source le long de la route par défaut. Cette source est l'adresse primaire, la première ligne.
Interrogez la table de routage sur la machine. Il n'est pas nécessaire de joindre la cible. 192.0.2.1 sert seulement à faire montrer quelle route par défaut serait prise vers l'extérieur, et quelle ligne source serait choisie.
ip route get 192.0.2.1
Le src de la sortie doit être la première ligne de la liste. via est la passerelle d'origine. Si src est devenu une ligne ajoutée ensuite, la route par défaut a été changée, ou la première ligne n'est plus l'adresse primaire de cette interface. Rétablissez la route par défaut de l'installation, et laissez les adresses supplémentaires en /32 sur l'interface.
Une session entrante déjà ouverte n'est pas concernée. Un client connecté à 203.0.113.21 a une socket dont l'adresse locale est 203.0.113.21, et les réponses utilisent cette source. Un navigateur qui ouvre un site sur l'adresse supplémentaire voit donc cette ligne. En même temps, apt, une tâche planifiée et un client HTTP qui ne lie pas d'adresse montrent encore la première ligne comme src.
Pour faire partir les nouvelles connexions d'un programme donné depuis une ligne supplémentaire, liez l'adresse locale dans ce programme. Le courrier, un reverse proxy et les clients d'API ont en général un réglage bind ou interface. Mettez-y la ligne choisie. La commande suivante ne fait que vérifier. Elle suppose que la source est déjà la ligne supplémentaire et demande si la passerelle par défaut est encore joignable. Elle ne change pas le défaut du système et ne remplace pas une liaison dans le programme.
ip route get 192.0.2.1 from 203.0.113.21
Remplacez l'adresse après from par la ligne à vérifier. src est alors cette ligne. Sans from, src doit rester la première ligne.
Le routage par politique ne traite que les paquets dont la source est déjà la ligne supplémentaire. Si le programme ne lie jamais cette ligne, la règle ne s'applique pas, et les nouvelles connexions continuent de partir de la première ligne. Après une liaison, si la passerelle de sortie est mauvaise, envoyez cette source dans sa propre table. Copiez la passerelle et l'équipement depuis ip route show default. Laissez la route par défaut de la table principale.
ip rule add from 203.0.113.21 table 121
ip route add default via 203.0.113.1 dev eno1 src 203.0.113.21 table 121
La table 121 ne correspond qu'aux paquets qui utilisent déjà 203.0.113.21 comme source. Les autres programmes restent sur la table principale et partent de la première ligne. Écrivez ces deux lignes dans la configuration de démarrage. Sinon les règles disparaissent au redémarrage, et un programme qui lie la ligne supplémentaire perd la sortie qu'il avait. Changer le src de la route par défaut principale vers une adresse supplémentaire déplacerait chaque nouvelle connexion de la machine, y compris les mises à jour. Ne le faites pas.
Sous Windows, une adresse supplémentaire ajoutée avec un masque d'hôte unique et SkipAsSource à true laisse aussi les nouvelles connexions sur la première ligne. Quand un programme doit partir de cette ligne, indiquez l'adresse locale dans le programme, ou mettez SkipAsSource à false pour cette adresse puis vérifiez src. N'ajoutez pas une seconde passerelle par défaut sur l'adaptateur.
Vérifier le courrier, le DNS et les certificats séparément
Le courrier est l'endroit où les deux chemins se mélangent. Un MX, ou l'enregistrement A du nom de courrier, peut pointer vers une ligne supplémentaire, et le processus de réception peut y écouter : le courrier entrant arrive alors sur cette ligne. Une nouvelle remise que la machine ouvre elle-même montre encore la première ligne comme source si le programme de courrier n'a pas lié d'adresse locale.
L'adresse publiée dans le SPF doit être la source que les destinataires voient vraiment. Si le courrier entrant utilise une ligne supplémentaire et que le sortant part encore de la première, le SPF liste la première ligne. Si le sortant est déjà lié à la ligne supplémentaire, le SPF liste cette ligne. Ne publiez pas un /29 entier.
Vérifiez dans cet ordre.
- 01 Le nombre de lignes égale 1 plus les supplémentaires achetées. Chaque ligne est encore sur la carte après redémarrage.
- 02 L'enregistrement A de chaque nom pointe vers la ligne où il doit arriver. Les noms qui partagent une adresse pointent tous vers la première ligne.
- 03 L'adresse d'écoute couvre cet enregistrement A. Un programme lié seulement à la première ligne ne répond pas aux autres.
- 04 Depuis l'extérieur, ouvrez le port de service de ce nom et confirmez que la requête arrive sur la ligne prévue.
- 05 Sur la machine, lancez ip route get 192.0.2.1 et confirmez que le src d'une nouvelle connexion non liée est encore la première ligne. Un programme qui doit utiliser une autre source lie lui-même cette ligne.
- 06 SSH ou RDP utilise encore la première ligne. Ne déplacez pas l'administration pour qu'elle n'écoute qu'une adresse supplémentaire, sinon la commande de la console ne correspond plus.
Les certificats suivent le nom d'hôte. Sur une ligne partagée, SNI choisit le certificat sur un seul port. Sur des lignes séparées, l'adresse d'écoute diffère, et le certificat est encore choisi par le nom utilisé pour la visite. Déplacer une adresse n'exige pas un certificat dont le nom est l'adresse.
Le pare-feu autorise des ports. Une adresse peut être sur la carte, et l'enregistrement A peut la viser, alors qu'un port fermé expire encore. Terminez les six vérifications, puis regardez le pare-feu. Quand les six correspondent, les sites partagent la première ligne par le nom ou occupent chacun une ligne de la liste, et le trafic sortant non lié part encore de la première ligne.
Décider le partage, puis acheter le nombre
Dès $454.8 / mois