URL: https://linuxfr.org/users/bubar/journaux/vacances-reseaux-hostiles Title: Vacances & Réseaux hostiles Authors: bubar🦥 Date: 2015年07月17日T14:38:37+02:00 License: CC By-SA Tags: cgroups, network_namespace, isolation, réseau_hostiles et vie_privée Score: 45 Bonjour Nal, Cette période propice à l'oisiveté est également parfois synonyme de déplacements physiques vers des contrées ensoleillées. Et comme tu es prévoyant, cher Nal, tu as probablement en stock un ou deux VPN plus ou moins communautaires, afin de pallier à l'absence de sécurité des points réseaux rencontrés, et de préserver ta vie privée. Combinaison de photos estivales personnelles et de réseaux inconnus, il n'en fallait pas plus pour que tu t'équipes. Cependant, par défaut ce n'est pas toujours pratique car tout ton beau système va se caler sur la patte réseau disponible. Or tu voudrais bien lancer HotDog-Time sur un vpn pour lui tout seul, par exemple. Et en même temps consulter ton courriel via imap sur un second vpn. Tout en surfant pour vérifier la météo des jours prochains directement sur le wifi de l'hotel. Bref, tu voudrais tout en même temps, et tout de suite. Proxy locaux ? Règles de routage seules ? Machine Virtuelle dédiée ? Que nenni ! Il y a plus simple, et taillé pour : l'isolation par espaces de nommages, ou _namespaces_ La [documentation](http://man7.org/linux/man-pages/man7/namespaces.7.html) est limpide, non ? Alors allons y par l'exemple. Et pour se faire, nous allons utiliser les spécificités "netns" de la commande "ip". Elle est pas belle, la vie ? :-) **A) Déclaration espace nommé "tunnel1"** ``` ip netns add tunnel1 ``` **B) Activation boucle locale** ``` ip netns exec tunnel1 ip addr add 127.0.0.1/8 dev lo ip netns exec tunnel1 ip link set lo up ``` **C) Activation interface virtuelle** ``` ip link add vpn0 type veth peer name vpn1 ip link set vpn0 up ``` **D) Assignation dans l'espace, IP interne & route** ``` ip link set vpn1 netns tunnel1 up ip addr add 10.20.20.1/24 dev vpn0 ip netns exec tunnel1 ip addr add 10.20.20.2/24 dev vpn1 ip netns exec tunnel1 ip route add default via 10.20.20.1 dev vpn1 ``` _Voilà voilà. Le plus gros est fait (attention bienzur à votre attribution d'ip, ici en exemple sur un réseau 10.20.20.0)_ **E) Iptables par dessus** ``` iptables -A INPUT \! -i vpn0 -s 10.20.20.0/24 -j DROP iptables -t nat -A POSTROUTING -s 10.20.20.0/24 -o wl+ -j MASQUERADE ``` _C'est bon, chez Nal ? (attention là aussi à la déclaration de carte réseau, ici pour l'exemple wl+ afin de faire matcher toute carte wifi, qu'elle se nomme wlanX ou wlpZyGds0z78 :p)_ **F) Autorise forward** ``` sysctl -q net.ipv4.ip_forward=1 ``` **G) Ajout d'un DNS** ``` mkdir -p /etc/netns/tunnel1 echo 'nameserver 8.8.8.8'> /etc/netns/tunnel1/resolv.conf ``` _(attention ici aussi : pour l'exemple c'est un dns de google, rien ne t'empêche d'utiliser un dns de la quadrature du net, par exemple) Et c'est prêt. Le namespace "tunnel1" est maintenant à tes ordres, cher Nal<_ **H) Lancement vpn isolé** ``` ip netns exec tunnel1 openvpn --config /etc/openvpn/hotdog-time.ovpn ``` _C'est sympa, non ? ip netns exec nom-espace mon-prog (attention là encore à faire pointer vers ta config à toi, ici nommé "hotdog-time.ovpn" qui pourrait aussi bien être Oslo.conf !)_ **I) Exécution application** ``` ip netns exec tunnel1 sudo -u tankey /opt/hotdog-time/hotdog-time ``` _(attention là aussi à placer ton nom de user :p, et ensuite à lancer le prog de ton choix, ici pour l'exemple hotdog-time qui aurait pu être qupzilla)_ **This is the end** Bref : une app = un réseau isolé des autres. Si tu veux. _& merci de bien vouloir me pardonner ma fainéantise à ne pas faire des schémas explicatifs pour les cartes et le namespace, ni de m'être lancé dans des explications concises et précises comme une doc de gentoo, mais ce sont les vacances, non ?_

AltStyle によって変換されたページ (->オリジナル) /