Petit problème avec iptables

Salut, j’ai suivi ce tutoriel qui est très complet, mais j’ai un petit soucis à cause de l’interface qu’a créé Pterodactyl (un gestionnaire de serveurs de jeux).
En gros, même en définissant les ports des serveurs à exclure pour la connexion vpn, mes serveurs sont injoignables depuis l’extérieur. Cela est dû au fait que le gestionnaire utilise sa propre interface, mais du coup je ne sais pas comment faire pour ajouter cette interface à la liste des interfaces dont les ports sont à exclure.

Les lignes responsables de ceci sont les suivantes (et voir partie 6 du tuto pour plus de détails):

    PostUp = ip route add default via 192.168.1.1 dev enp8s0 table novpn
    PostUp = ip rule add fwmark 0x2 table novpn
    PostUp = /sbin/iptables -A OUTPUT -t mangle -o wg0 -p tcp --sport 80 -j MARK --set-mark 2 #http
    PostUp = /sbin/iptables -A OUTPUT -t mangle -o wg0 -p tcp --sport 443 -j MARK --set-mark 2 #https
    PostUp = /sbin/iptables -A OUTPUT -t mangle -o wg0 -p tcp --sport 25563 -j MARK --set-mark 2 #pterodactyl
    PostUp = /sbin/iptables -A OUTPUT -t mangle -o wg0 -p tcp --sport 25564 -j MARK --set-mark 2 #pterodactyl

Je vous en ai épargné beaucoup, et il y a l’inverse pour PostDown.

Voici une petite capture d’écran des interfaces de mon serveur: https://prnt.sc/xpuzui

Merci d’avance pour celui qui m’aidera! :smiley:

Pour quoi faire ? (Non, je n’ai pas suivi le lien pour voir, et je ne le ferai pas sans explication. J’ai pour politique de ne jamais suivre un lien « sec », je n’ai pas de temps à perdre avec ça, je préfère le perdre autrement)

Quels ports ? Quelle connexion VPN ? Entre quoi et quoi ? Pour quel trafic ?

Le gestionnaire de quoi ? Quelle interface ?

A quoi correspond wg0 ?

Il parle de pterodactyl: gestionnaire de jeux je crois
wg0 est l’équivalent wireguard de tun0

Le tutoriel permet de télécharger des torrents au travers d’une connexion VPN Wireguard, mais également de laisser libre certains ports dont je dois spécifier le numéro.

Ici les ports que je définis sont libérés sur l’interface enp8s0, interface qu’utilise mon serveur pour communiquer avec Internet. Le problème étant que mon gestionnaire de serveurs utilise sa propre interface pour faire communiquer les serveurs vers l’extérieur, les ports spécifiés ne s’y appliquent pas. Par conséquent, même s’ils sont définis, les serveurs sont injoignables si j’active le script.

Donc ce que je souhaiterai, ça serai de pouvoir faire la même chose qu’avec mon interface principale, avec l’interface pterodactyl0.

wg0 correspond à l’interface de Wireguard.

A quoi cette interface pterodactyl0 est-elle connectée ?
On peut voir la sortie de

ip -4 addr
ip -4 rule
ip -4 route show table  "toute table listée par la commande précédente excepté local et main"
ip -4 route

Bien sûr. Je ne m’y connais pas trop, mais je pense que cette interface est liée à internet vu que l’on peu communiquer dessus depuis l’extérieur au travers des ports spécifiés dans le panel.

*En sachant que j’ai désactivé le script pour pouvoir utiliser mes serveurs:
ip -4 addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic noprefixroute enp8s0
       valid_lft 80282sec preferred_lft 80282sec
4: pterodactyl0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    inet 172.18.0.1/16 brd 172.18.255.255 scope global pterodactyl0
       valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
14: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever

ip -4 rule

0:      from all lookup local
32762:  from 192.168.0.1 lookup VPN
32766:  from all lookup main
32767:  from all lookup default

ip -4 route show table "32762"

Error: ipv4: FIB table does not exist.
Dump terminated

ip -4 route show table "32767"

Error: ipv4: FIB table does not exist.
Dump terminated

ip -4 route

default via 192.168.1.1 dev enp8s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
169.254.0.0/16 dev enp8s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev pterodactyl0 proto kernel scope link src 172.18.0.1
192.168.1.0/24 dev enp8s0 proto kernel scope link src 192.168.1.16 metric 100

Voilà tout. :stuck_out_tongue:

La table, c’est le nom après « lookup ». Le numéro est celui de la règle, pas de la table.
Affiche aussi la table « novpn » qu’on voit dans les commandes PostUp de ton message initial mais pas dans les règles de routage actives.

Ah oui pardon
ip -4 route show table "VPN"

default dev tun0 scope link

ip -4 route show table "default"

Error: ipv4: FIB table does not exist.

A quoi correspond l’interface tun0 ?
A quoi correspond l’adresse 192.168.0.1 ?
A quoi correspond l’interface wg0 ? Pourquoi ne la voit-on pas ?

Je ne saurais pas te répondre pour tun0. L’adresse ip est l’adresse de ma livebox, et wg0 n’est visible que lorsque je lance le script vpn. Dans ce cas je peux télécharger en torrent et les serveurs sont injoignables.

L’adresse de la livebox ne serait pas plutôt 192.168.1.1 ?
Pourrais-tu refaire toutes les commandes ip addr, rule et route avec le VPN actif ?
Ainsi que la sortie de iptables-save ?

Heu si en effet xD

ip -4 addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic noprefixroute enp8s0
       valid_lft 65674sec preferred_lft 65674sec
4: pterodactyl0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    inet 172.18.0.1/16 brd 172.18.255.255 scope global pterodactyl0
       valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
14: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
53: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 10.66.66.2/32 scope global wg0
       valid_lft forever preferred_lft forever

ip -4 rule

0:      from all lookup local
32759:  from all fwmark 0x2 lookup novpn
32760:  from all lookup main suppress_prefixlength 0
32761:  not from all fwmark 0xca6c lookup 51820
32762:  from 192.168.0.1 lookup VPN
32766:  from all lookup main
32767:  from all lookup default

ip -4 route show table "novpn"

default via 192.168.1.1 dev enp8s0

ip -4 route show table "51820"

default dev wg0 scope link

ip -4 route show table "VPN"

default dev wg0 scope link

ip -4 route show table "default"

Error: ipv4: FIB table does not exist.
Dump terminated

Voilà tout. :stuck_out_tongue:

Nom utilisé par un panel de gestion d’hébergement de serveur de jeux sous docker.
Docker semble en mode bridge et possède deux réseau, l’un pour le fameux panel, l’autre sans doute non utilisé.

Pour ce qui est de tun0 je pense que cela correspond à une tentative d’installation/configuration de OpenVPN.

Quant à wgO, ne serait-ce pas une tentative d’installer/configurer Wireguard

Je dirait qu’il y a un sacré sac de nœuds … panel de gestion de jeux, multiple vpn, téléchargement en peer to pire :smiley: le tout at Home.

1 J'aime

C’est vrai que j’utilisais un serveur openvpn jusqu’à 31/12, mais j’ai changé de serveur vpn depuis et j’ai suivis ce tutoriel par la suite.
Et oui c’est un sacré sac de nœuds! xD
Tout serait plus simple si je m’y connaissais un peu plus en Linux mais je n’ai malheureusement pas beaucoup d’expérience, ce serveur est en quelques sorte mon larbin à tout faire. x)

Je tiens à préciser que cette installation est bien plus ordonnée que ma précédente, qui pour le coup comportait même un serveur ftp non configuré, laissant donc une porte grande d’entrée grande ouverte à mon serveur. xD
PS: L’avantage du At Home est de bénéficier d’une puissance à moindre coût sur le long terme (comptez 80€ pour quelques chose de similaire chez OVH); ^^

Tu as hostinger qui est bien question tarif: certainement le mieux d’ailleurs et c’est du « deutsche qualitat »

Non mais je tiens à rester chez moi. x)

Si quoi ?

Non, pas tout. J’avais demandé la sortie de « ip -4 route » tout court (équivalent à spécifier la table « main ») et iptables-save.

En effet :

Dans les mêmes conditions,

ip -4 route

default via 192.168.1.1 dev enp8s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
169.254.0.0/16 dev enp8s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev pterodactyl0 proto kernel scope link src 172.18.0.1
192.168.1.0/24 dev enp8s0 proto kernel scope link src 192.168.1.16 metric 100

iptables-save

# Generated by iptables-save v1.8.5 on Sat Jan 30 14:44:30 2021
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 10.66.66.2/32 ! -i wg0 -m addrtype ! --src-type LOCAL -m comment --comment "wg-quick(8) rule for wg0" -j DROP
COMMIT
# Completed on Sat Jan 30 14:44:30 2021
# Generated by iptables-save v1.8.5 on Sat Jan 30 14:44:30 2021
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m comment --comment "wg-quick(8) rule for wg0" -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 80 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 443 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 22 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 32400 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 30000 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 25563 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 25564 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 25565 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 25566 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 30110 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 28083 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 28015 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 2022 -j MARK --set-xmark 0x2/0xffffffff
-A OUTPUT -o wg0 -p tcp -m tcp --sport 8080 -j MARK --set-xmark 0x2/0xffffffff
-A POSTROUTING -p udp -m mark --mark 0xca6c -m comment --comment "wg-quick(8) rule for wg0" -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
COMMIT
# Completed on Sat Jan 30 14:44:30 2021
# Generated by iptables-save v1.8.5 on Sat Jan 30 14:44:30 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o pterodactyl0 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p tcp -m tcp --dport 25563 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p udp -m udp --dport 25563 -j MASQUERADE
-A POSTROUTING -s 172.18.0.3/32 -d 172.18.0.3/32 -p tcp -m tcp --dport 30119 -j MASQUERADE
-A POSTROUTING -s 172.18.0.3/32 -d 172.18.0.3/32 -p udp -m udp --dport 30119 -j MASQUERADE
-A POSTROUTING -s 172.18.0.5/32 -d 172.18.0.5/32 -p tcp -m tcp --dport 30110 -j MASQUERADE
-A POSTROUTING -s 172.18.0.5/32 -d 172.18.0.5/32 -p udp -m udp --dport 30110 -j MASQUERADE
-A POSTROUTING -s 172.18.0.4/32 -d 172.18.0.4/32 -p tcp -m tcp --dport 25579 -j MASQUERADE
-A POSTROUTING -s 172.18.0.4/32 -d 172.18.0.4/32 -p udp -m udp --dport 25579 -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i pterodactyl0 -j RETURN
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p tcp -m tcp --dport 25563 -j DNAT --to-destination 172.18.0.2:25563
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p udp -m udp --dport 25563 -j DNAT --to-destination 172.18.0.2:25563
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p tcp -m tcp --dport 30119 -j DNAT --to-destination 172.18.0.3:30119
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p udp -m udp --dport 30119 -j DNAT --to-destination 172.18.0.3:30119
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p tcp -m tcp --dport 30110 -j DNAT --to-destination 172.18.0.5:30110
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p udp -m udp --dport 30110 -j DNAT --to-destination 172.18.0.5:30110
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p tcp -m tcp --dport 25579 -j DNAT --to-destination 172.18.0.4:25579
-A DOCKER -d 192.168.1.16/32 ! -i pterodactyl0 -p udp -m udp --dport 25579 -j DNAT --to-destination 172.18.0.4:25579
COMMIT
# Completed on Sat Jan 30 14:44:30 2021
# Generated by iptables-save v1.8.5 on Sat Jan 30 14:44:30 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
:SERVICES - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o pterodactyl0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o pterodactyl0 -j DOCKER
-A FORWARD -i pterodactyl0 ! -o pterodactyl0 -j ACCEPT
-A FORWARD -i pterodactyl0 -o pterodactyl0 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i pterodactyl0 -o pterodactyl0 -p tcp -m tcp --dport 25563 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i pterodactyl0 -o pterodactyl0 -p udp -m udp --dport 25563 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i pterodactyl0 -o pterodactyl0 -p tcp -m tcp --dport 30119 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i pterodactyl0 -o pterodactyl0 -p udp -m udp --dport 30119 -j ACCEPT
-A DOCKER -d 172.18.0.5/32 ! -i pterodactyl0 -o pterodactyl0 -p tcp -m tcp --dport 30110 -j ACCEPT
-A DOCKER -d 172.18.0.5/32 ! -i pterodactyl0 -o pterodactyl0 -p udp -m udp --dport 30110 -j ACCEPT
-A DOCKER -d 172.18.0.4/32 ! -i pterodactyl0 -o pterodactyl0 -p tcp -m tcp --dport 25579 -j ACCEPT
-A DOCKER -d 172.18.0.4/32 ! -i pterodactyl0 -o pterodactyl0 -p udp -m udp --dport 25579 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i pterodactyl0 ! -o pterodactyl0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o pterodactyl0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat Jan 30 14:44:30 2021

A quoi te sert-il d’avoir de l’APIPA sur ton réseau?

Ces adresses n’existent en général que s’il y a eu un échec DHCP. Et dans les machines Linux ne devraient pas apparaitre (Windows le fait automatiquement ce qui devrait être configurable).

Je n’en ai aucune idée. Ça a du être paramétré lors d’une installation.