Demande d'aide : c'est ici.
CTparental
Membre
Messages : 38 Inscription : 14 sept. 2016, 21:29
Contact :
Status :
Hors-ligne
07 nov. 2018, 18:44
Bonjour,
je n'arrive pas a utiliser correctement nftables sous debian testing , en effet je tente de rediriger toute requêtes dns émise par mon poste vers un serveur dnsmasq écoutent sur le port 54 , les commendes ne retourne aucune erreurs mais la redirection n'est pas effective.
ci dessous le script que je lance.
Code : Tout sélectionner
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
rmmod ip_tables
modprobe nf_tables
modprobe nf_socket_ipv4
modprobe nft_nat
modprobe nft_chain_nat_ipv4
modprobe nft_chain_nat_ipv6
modprobe nft_fib_ipv4
modprobe nft_objref
modprobe nft_chain_route_ipv4
modprobe nft_fib_ipv6
modprobe nft_queue
modprobe nft_chain_route_ipv6
modprobe nft_fib_netdev
modprobe nft_quota
modprobe nft_compat
modprobe nft_fwd_netdev
modprobe nft_redir
modprobe nft_counter
modprobe nft_hash
modprobe nft_redir_ipv4
modprobe nft_ct
modprobe nft_limit
modprobe nft_redir_ipv6
modprobe nft_dup_ipv4
modprobe nft_log
modprobe nft_reject
modprobe nft_dup_ipv6
modprobe nft_masq
modprobe nft_reject_bridge
modprobe nft_dup_netdev
modprobe nft_masq_ipv4
modprobe nft_reject_inet
modprobe nft_fib
modprobe nft_masq_ipv6
modprobe nft_reject_ipv4
modprobe nft_fib_inet
modprobe nft_numgen
modprobe nft_reject_ipv6
nft flush ruleset
nft add table NAT
nft add chain NAT postrouting \{ type nat hook postrouting priority 100 \; \}
nft add chain NAT prerouting \{ type nat hook prerouting priority 0 \; \}
nft add rule NAT prerouting udp dport 53 dnat 127.0.0.1:54
nft add rule NAT prerouting tcp dport 53 dnat 127.0.0.1:54
#nft add rule NAT prerouting tcp dport 53 redirect to 54
#nft add rule NAT prerouting udp dport 53 redirect to 54
nft list table NAT
voici ce que cela me retourne:
rmmod: ERROR: Module ip_tables is not currently loaded
table ip NAT {
chain postrouting {
type nat hook postrouting priority 100; policy accept;
}
chain prerouting {
type nat hook prerouting priority 0; policy accept;
udp dport domain dnat to 127.0.0.1:54
tcp dport domain dnat to 127.0.0.1:54
}
}
auriez vous des idées a me soumettre .
AMD A6-6400K
Radeon HD 7750/8740 / R7 250E 1GDDR5
8G ram DDR3
Debian Sid Xfce lightdm
PascalHambourg
Contributeur
Messages : 930 Inscription : 05 août 2016, 20:25
Status :
Hors-ligne
07 nov. 2018, 21:48
Le serveur dnsmasq et les règles nftables sont sur la machine qui émet les requêtes DNS ?
Dans ce cas il faut mettre les règles dans postrouting pour qu'elles s'appliquent aux paquets sortants.
CTparental
Membre
Messages : 38 Inscription : 14 sept. 2016, 21:29
Contact :
Status :
Hors-ligne
08 nov. 2018, 07:28
PascalHambourg a écrit : 07 nov. 2018, 21:48
Le serveur dnsmasq et les règles nftables sont sur la machine qui émet les requêtes DNS ?
Dans ce cas il faut mettre les règles dans postrouting pour qu'elles s'appliquent aux paquets sortants.
oui tous en local sur le même poste , je vais tester sa je ferai un retour.
merci j'avais pas pensé a sa.
bon j'ai fait le test via postrouting malheureusement pas de dnat possible en postrouting, j'ai aussi tester le dnat via la output mais sans plus de succès c'est étrange car avec iptables sous debian 9
Code : Tout sélectionner
iptables -t nat -N matablenat
iptables -t nat -A matablenat -m owner --uid-owner "utilisateur1" -p tcp --dport 53 -j DNAT --to 127.0.0.1:54
fonctioner très bien même en local avec tous sur la me machine.
je croix que je vais encore attendre avant de passer, a nftable , car j'ai l'impression que certaine fonctionnalité ne sont pas encore au point.
AMD A6-6400K
Radeon HD 7750/8740 / R7 250E 1GDDR5
8G ram DDR3
Debian Sid Xfce lightdm
CTparental
Membre
Messages : 38 Inscription : 14 sept. 2016, 21:29
Contact :
Status :
Hors-ligne
10 nov. 2018, 19:51
avec ce code j'ai un peut de changement , un dig en root fonctionne bien sans redirection, un dig avec l'user id 1000 n'arrive pas a trouver le serveur dns, la redirection semble donc être faite mais pas correctement .
Code : Tout sélectionner
#!/bin/bash
.....
nft flush ruleset
nft add table ip nat
nft add chain nat pre \{ type nat hook prerouting priority 0 \; \}
nft add chain nat forw \{ type filter hook forward priority 0 \; \}
nft add chain nat out \{ type nat hook output priority 0 \; \}
nft add chain nat post \{ type nat hook postrouting priority 100 \; \}
nft add rule nat out udp dport 53 skuid 1000 dnat :54
nft add rule nat out tcp dport 53 skuid 1000 dnat :54
nft list table nat
avec un le code ci dessous aucune redirection n'est effectuer , même mauvaise .
Code : Tout sélectionner
nft add rule nat out udp dport 53 skuid 1000 dnat 127.0.0.1:54
nft add rule nat out tcp dport 53 skuid 1000 dnat 127.0.0.1:54
je suppose qu'il manque un module ou une option dans le noyau debian buster.
AMD A6-6400K
Radeon HD 7750/8740 / R7 250E 1GDDR5
8G ram DDR3
Debian Sid Xfce lightdm
CTparental
Membre
Messages : 38 Inscription : 14 sept. 2016, 21:29
Contact :
Status :
Hors-ligne
15 nov. 2018, 19:04
bon sa fonctionne parfaitement avec ce scripte, encore merci pour m'avoir mis sur la voie.
Code : Tout sélectionner
#!/bin/bash
sysctl -w net.ipv4.conf.all.route_localnet=0
sysctl -w net.ipv4.ip_forward=1
rmmod ip_tables
modprobe nf_tables
modprobe nf_tables_set
modprobe nft_chain_nat_ipv6
modprobe nft_chain_nat_ipv4
modprobe nft_chain_route_ipv6
modprobe nft_chain_route_ipv4
modprobe nft_counter
modprobe nft_ct
modprobe nft_exthdr
modprobe nft_hash
modprobe nft_limit
modprobe nft_log
modprobe nft_masq
modprobe nft_meta
modprobe nft_nat
modprobe nft_queue
modprobe nft_rbtree
modprobe nft_redir
modprobe nft_reject_inet
modprobe nft_reject
modprobe nft_reject_ipv4
modprobe nft_reject_ipv6
modprobe nft_compat
modprobe nft_fib_inet
modprobe nft_redir_ipv6
modprobe nft_dup_ipv4
modprobe nft_fib_ipv4
modprobe nft_masq_ipv6
modprobe nft_reject_bridge
modprobe nft_dup_ipv6
modprobe nft_fib_ipv6
modprobe nft_numgen
modprobe nft_dup_netdev
modprobe nft_fib_netdev
modprobe nft_objref
modprobe nft_fib
modprobe nft_fwd_netdev
modprobe nft_quota
nft flush ruleset
## je passe par un fichier pour pouvoir mètre les priorisées négatives car si non l'erreur nft: invalid option -- '1' ce produit
## plus d’explication ici https://www.linuxquestions.org/questions/linux-security-4/nftables-add-table-and-chains-4175526661/
## https://wiki.nftables.org/wiki-nftables/index.php/Configuring_chains => Base chain priority => NF_IP_PRI_NAT_DST (-100): destination NAT
echo 'table ip natct {
chain pre { type nat hook prerouting priority -100 ; }
chain out { type nat hook output priority -100 ; }
chain post { type nat hook postrouting priority 100 ; }
}' > /tmp/natct.nft
nft -f /tmp/natct.nft
rm -f /tmp/natct.nft
nft add rule natct out udp dport 53 skuid 1000 dnat 127.0.0.1:54
nft add rule natct out tcp dport 53 skuid 1000 dnat 127.0.0.1:54
nft list table natct
AMD A6-6400K
Radeon HD 7750/8740 / R7 250E 1GDDR5
8G ram DDR3
Debian Sid Xfce lightdm