web-dev-qa-db-fra.com

Ubuntu 18.04 en tant que routeur

Ubuntu 18.04. On m'a demandé d'utiliser Ubuntu en tant que simple routeur.

La boîte Ubuntu dispose de 2 interfaces - Ens33 DHCP, Ens38 192.168.10.1/24. 33 est à l'extérieur, 38 est à l'intérieur pour mes besoins. Il y a quelques réseaux derrière cette boîte - 192.168.10.x et 192.168.20.x. À partir de n’importe lequel de ces réseaux, je peux envoyer une requête ping aux deux interfaces de la boîte Ubuntu. Je ne peux pas cingler au-delà de l'interface externe (33).

J'ai édité /etc/sysctl.conf pour autoriser le transfert ipv4 - net.ipv4.ip_forward = 1.

J'ai ajouté un itinéraire pour afficher la passerelle vers un autre réseau 192.168.20.x via 38.

Ne cherche pas à nat, juste la route.

Quelqu'un voit ce que je manque? Faites-moi savoir si plus d'informations sont nécessaires.

Doug

2
Doug

Je voulais poster la réponse que je cherchais au cas où quelqu'un d'autre aurait besoin du même scénario. AlexP m'a dirigé dans la bonne direction ci-dessus - les boîtes extérieures ne savaient pas comment répondre et je ne voulais pas avoir à ajouter d'itinéraires sur tous les réseaux susceptibles de l'utiliser.

Je voulais le routage mais j'avais aussi besoin de NAT.

Ces instructions ont été combinées à partir de plusieurs sources différentes mais principalement - https://help.ubuntu.com/lts/serverguide/firewall.html <- la section ufw IP Maquerading ici.

Instructions CentOS à partir d'ici - https://ronnybull.com/2015/11/20/how-to-centos-7-router/ .

J'assume une interface interne et une interface externe sur la boîte Ubuntu et que les paramètres pour ceux-ci ont déjà été configurés. (Ajoutons également des instructions tout en bas pour accomplir la même chose avec CentOS 7 - c'était aussi une exigence de la mienne)

1 . d'abord, activer la journalisation ufw et ufw

Sudo ufw enable
Sudo ufw logging on

2 . Videz les règles existantes (ne le faites PAS si vous utilisez déjà des tables ufw ou IP pour le pare-feu). Supprimer et vider. Le tableau par défaut est "filtre". D'autres comme "nat" doivent être explicitement indiqués.

iptables --flush            # Flush all the rules in filter and nat tables    
iptables --table nat --flush    
iptables --delete-chain    # Delete all chains that are not in default filter and nat table    
iptables --table nat --delete-chain    

3 . Premièrement, le transfert de paquets doit être activé dans ufw. Deux fichiers de configuration devront être ajustés. Dans/etc/default/ufw, remplacez DEFAULT_FORWARD_POLICY par "ACCEPT":

DEFAULT_FORWARD_POLICY="ACCEPT"

4 . Puis éditez /etc/ufw/sysctl.conf et décommentez:

net/ipv4/ip_forward=1
net/ipv4/conf/all/forwarding=1 
net/ipv6/conf/default/forwarding=1 # if using IPv6

5 . Ajoutez maintenant des règles au fichier /etc/ufw/before.rules. Les règles par défaut ne configurent que la table de filtrage. Pour activer le masquage, la table nat doit être configurée. Ajoutez ce qui suit en haut du fichier juste après les commentaires d’en-tête:

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

Une instruction COMMIT correspondante est requise pour chaque table. Dans ces exemples, seules les tables nat et filter sont montrées, mais vous pouvez également ajouter des règles pour les tables raw et mangle. Dans l'exemple ci-dessus, remplacez eth0, eth1 et 192.168.0.0/24 par les interfaces et la plage IP appropriées pour votre réseau.

6 . Enfin, désactivez et réactivez ufw pour appliquer les modifications:

Sudo ufw disable && Sudo ufw enable

Le masquage IP devrait maintenant être activé. Vous pouvez également ajouter des règles FORWARD supplémentaires au /etc/ufw/before.rules. Il est recommandé d’ajouter ces règles supplémentaires à la chaîne ufw-before-forward.

CentOS 7 firewalld config pour accomplir la même chose -

1. Activez le transfert de paquets IPv4.

une. Ajoutez les éléments suivants à /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. Appliquez les paramètres sysctl:

sysctl -p

2. Ajoutez des règles directes à firewalld. Ajoutez l'option --permanent pour conserver ces règles lors des redémarrages.

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT

une. Ajoutez les éléments suivants à /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. Appliquez les paramètres sysctl:

sysctl -p

2. Ajoutez des règles directes à firewalld. Ajoutez l'option --permanent pour conserver ces règles lors des redémarrages.

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT
1
Doug