Est-il préférable de définir des règles dans ip6tables ou de désactiver ipv6?


11

J'ai la configuration réseau suivante:

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:e0:1c:73:02:09
          inet addr:10.1.4.41  Bcast:10.1.255.255  Mask:255.255.0.0
          inet6 addr: fe80::2e0:4cff:fe75:309/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:858600 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1069549 errors:0 dropped:0 overruns:5 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:142871181 (136.2 MiB)  TX bytes:717982640 (684.7 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:37952 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37952 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3396918 (3.2 MiB)  TX bytes:3396918 (3.2 MiB)

J'ai un serveur DHCP sur mon réseau et je peux obtenir le bail suivant:

lease {
  interface "eth0";
  fixed-address 10.1.4.41;
  option subnet-mask 255.255.0.0;
  option routers 10.1.255.253;
  option dhcp-lease-time 120;
  option dhcp-message-type 5;
  option domain-name-servers 82.160.125.52,213.199.198.248,82.160.1.1;
  option dhcp-server-identifier 192.168.22.22;
  renew 3 2014/01/01 18:34:41;
  rebind 3 2014/01/01 18:35:30;
  expire 3 2014/01/01 18:35:45;
}

Je peux cingler 127.0.0.1, ::1, 10.1.4.41:

$ ping 10.1.4.41
PING 10.1.4.41 (10.1.4.41) 56(84) bytes of data.
64 bytes from 10.1.4.41: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 10.1.4.41: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 10.1.4.41: icmp_seq=3 ttl=64 time=0.085 ms
^C
--- 10.1.4.41 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.065/0.075/0.085/0.008 ms

$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.055 ms
^C
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.055/0.059/0.066/0.005 ms

$ ping6 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.037 ms
^C
--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.037/0.046/0.052/0.006 ms

Je ne peux pas cingler l'adresse IPv6 fe80::2e0:4cff:fe75:309:

$ ping6 fe80::2e0:4cff:fe75:309
connect: Invalid argument

J'ai défini quelques règles iptables (ipv4):

# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N TCP
-N UDP
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A OUTPUT -m conntrack --ctstate INVALID -j DROP

Et cela fonctionne comme prévu pour ipv4. Mais quand je vérifie ip6tables, je peux voir certains paquets y aller:

# ip6tables -nvL
Chain INPUT (policy ACCEPT 381 packets, 27624 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 390 packets, 26296 bytes)
 pkts bytes target     prot opt in     out     source               destination

J'ai suivi ce guide, et ils disent que je devrais copier la configuration iptables (ipv4) et la coller dans ip6tables (ipv6). Mais quand je fais cela, aucun paquet ne peut passer par la règle RELATED,ESTABLISHEDde la table ipv6. Tous sont supprimés en raison de la politique de chaîne INPUT ( DROP).

# ip6tables -nvL
Chain INPUT (policy DROP 5 packets, 360 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all      eth0   *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0
    0     0 ACCEPT     all      tun0   *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
    0     0 DROP       all      *      *       ::/0                 ::/0                 ctstate INVALID
    0     0 UDP        udp      *      *       ::/0                 ::/0                 ctstate NEW
    0     0 TCP        tcp      *      *       ::/0                 ::/0                 tcp flags:0x17/0x02 ctstate NEW
    0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
    0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all      *      *       ::/0                 ::/0                 ctstate INVALID

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination

Comme vous pouvez le voir, il n'y a pas de paquets de sortie, alors pourquoi Google et l'échange de piles essaient de se connecter à ma machine? Et comment font-ils parce que même je ne peux pas cingler mon adresse ipv6?

Ils disent également que si mon FAI n'a pas ipv6 (dans le bail, il n'y a pas d'entrée ipv6), je devrais désactiver ipv6 et je l'avais déjà fait en utilisant ipv6.disable=1. J'ai posé une question similaire à meta.stackoverflow.com, et j'ai obtenu une réponse que je ne devrais pas désactiver ipv6.

Je ne sais pas quoi faire. J'ai des problèmes de connexion, je veux dire que parfois je ne peux pas accéder aux pages à l'échange de pile, ou à Google, j'ai également des problèmes avec pastebin.com. Dans chaque cas, il y a les mêmes symptômes - après avoir tapé une adresse dans mon navigateur, je dois parfois attendre plusieurs minutes pour accéder au site et après l'avoir rechargé 2-3 fois, je peux le parcourir librement, au moins pendant une certaine période de temps.

Réponses:


13

Votre adresse IPv6 commence par fe80:et est donc une adresse de lien local. Ces adresses ne sont utilisables que sur le même lien que l'interface réseau. Étant donné que le même sous-réseau local de liaison existe sur chaque interface réseau, vous devrez spécifier quelle interface vous souhaitez utiliser. Par exemple, lorsque vous souhaitez envoyer une requête ping à une adresse de lien local.

Essayez l'un des ping6exemples suivants . Les deux font de même:

ping6 fe80::2e0:4cff:fe75:309%eth0
ping6 -I eth0 fe80::2e0:4cff:fe75:309

Cela signifie également que seuls les systèmes de votre lien local (votre réseau local) peuvent utiliser cette adresse de lien local pour se connecter à votre système. Les routeurs n'achemineront pas ces adresses. Il n'y a aucun moyen que Google ou Stack Exchange envoient du trafic IPv6 vers votre machine, car votre machine n'a pas d'adresse IPv6 qui soit accessible / routable depuis eux.

Alors, quel trafic IPv6 êtes - vous voir sur votre interface? Probablement des choses comme mDNS ( DNS multicast ) et d'autres protocoles qui peuvent se connecter automatiquement sur le lien local. Par exemple Apple Airplay et Windows Home Group .

Vos règles de pare - feu manquent une chose très importante: ICMPv6. IPv6 utilise ICMP beaucoup plus que IPv4, et ne pas laisser les paquets ICMP peut gravement entraver votre trafic car vous ne recevrez pas de messages d'erreur liés à ce trafic. Cela peut entraîner de longs retards / délais d'attente. Autoriser le trafic ICMPv6 ne fait généralement pas de mal, vous pouvez donc l'ajouter à vos règles de pare-feu:

ip6tables -A INPUT -p icmpv6 -j ACCEPT

Si vous voulez bloquer les ping6paquets (bien que je ne comprenne pas vraiment pourquoi les gens le font encore de nos jours, cela rend le débogage de la connectivité beaucoup plus difficile), vous pouvez ajouter ceci comme avant la ACCEPTligne précédente :

ip6tables -A INPUT -p icmpv6 --icmpv6-type 128 -j DROP

Ceci est surtout important lorsque vous obtenez une véritable connectivité IPv6 globale à votre machine, mais cela ne fera pas de mal si vous vous y préparez déjà :-)


1
Je comprends maintenant. J'ai ajouté la icmpv6règle mais limitée à 20 / min, et je peux voir que les paquets y vont. ping6 -I eth0 fe80::2e0:4cff:fe75:309fonctionne également.
Mikhail Morfikov

2

Lors de la gestion des systèmes, je considère toujours que tout ce dont je n'ai pas explicitement besoin pour fournir les services sur ledit système doit être désactivé. Cette philosophie va à tout, que ce soit:

  • désinstallation de logiciels inutiles
  • désactivation d'un bureau GUI sur un serveur
  • désactivation et / ou exclusion de matériel inutile
  • désactivation d'IPv6
  • désactivation des services inutiles
  • etc.

J'ai la même philosophie, mais dans ce cas, je ne sais vraiment pas quoi faire. Certaines personnes disent que je devrais désactiver ipv6, d'autres disent quelque chose de différent. J'ai des problèmes même lorsque ipv6 est désactivé.
Mikhail Morfikov

@MikhailMorfikov - votre FAI exécute-t-il n'importe quel proxy / NAT où il oblige ses clients à utiliser IPv6 juste pour accéder au FAI. Je ne pense pas que ce soit un problème pour vous, sinon vous auriez une adresse IPv6 mais vous y auriez pensé.
slm

Je n'en ai aucune idée, je devrais peut-être leur demander, et peut-être qu'ils feront quelque chose et régleront le problème.
Mikhail Morfikov

2

Ils disent également que si mon FAI n'a pas ipv6 (dans le bail, il n'y a pas d'entrée ipv6), je devrais désactiver ipv6 et je l'ai déjà fait en utilisant ipv6.disable = 1. J'ai posé une question similaire sur meta.stackoverflow.com, et j'ai obtenu une réponse que je ne devrais pas désactiver ipv6.

bien sûr, vous ne verriez pas de bail d'adresse IPv6 avec DHCP - c'est à cela que DHCPv6 est destiné: DHCP et DHCPv6 ne sont pas compatibles.

Désactiver ou non IPv6: si vous n'en avez pas besoin et que votre FAI ne le fournit pas encore, désactivez-le mais préparez-vous à son introduction . Cela comprend la suppression / la refonte de tout ce qui repose explicitement sur l'IP hérité, comme les adresses IP codées en dur ou l'utilisation de la diffusion.

Apropos désactivation d'IPv6: sachez par exemple que Microsoft considère IPv6 comme une partie intégrante du système d'exploitation, donc la désactivation d'IPv6 peut affecter le support que vous obtenez d'eux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.