É melhor definir regras no ip6tables ou desativar o ipv6?

11

Eu tenho a seguinte configuração de rede:

# 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)

Eu tenho servidor DHCP na minha rede e consigo o seguinte contrato:

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;
}

Eu posso pingar 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

Não consigo fazer o ping no endereço do ipv6 fe80::2e0:4cff:fe75:309 :

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

Eu configurei algumas regras do 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

E funciona como esperado para o ipv4. Mas quando eu verifico ip6tables, eu posso ver alguns pacotes lá:

# 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

Eu segui este guia, e eles disseram que eu deveria copiar a configuração do iptables (ipv4) e colá-la em ip6tables (ipv6). Mas quando eu faço isso, nenhum pacote pode passar pela regra RELATED,ESTABLISHED na tabela ipv6. Todos eles são descartados devido à política da cadeia 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

Como você pode ver, não há pacotes de saída, então por que o google e o stack swap tentam se conectar à minha máquina? E como eles fazem isso porque mesmo eu não consigo pingar meu endereço ipv6?

Eles também dizem que se o meu ISP não tiver o ipv6 (no contrato de locação, não há entrada do ipv6) eu deveria desabilitar o ipv6 e já fiz isso antes usando ipv6.disable=1 . Eu fiz uma pergunta semelhante em meta.stackoverflow.com e recebi uma resposta dizendo que não deveria desabilitar o ipv6.

Eu não tenho ideia do que fazer. Eu tenho alguns problemas de conexão, quero dizer, às vezes não consigo acessar páginas em troca de pilha, ou google, eu também tenho problemas com pastebin.com. Em cada caso, há os mesmos sintomas - depois de digitar um endereço no meu navegador, eu tenho que esperar algumas vezes vários minutos para acessar o site e depois de recarregá-lo 2-3 vezes, eu posso navegar livremente, pelo menos por um Certo período de tempo.

    
por Mikhail Morfikov 06.01.2014 / 04:07

3 respostas

13

Seu endereço IPv6 começa com fe80: e, portanto, é um endereço de link local. Tais endereços são utilizáveis apenas no mesmo link que a interface de rede. Como a mesma sub-rede local de link existe em todas as interfaces de rede, você terá que especificar a qual interface que deseja usar. Por exemplo, quando você deseja executar um ping em um endereço local de link.

Tente um dos seguintes exemplos de ping6 . Ambos fazem o mesmo:

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

Isso também significa que somente os sistemas no seu link local (sua LAN) podem usar esse endereço de link local para se conectar ao seu sistema. Os roteadores não roteiam esses endereços. Não há como o Google ou o Stack Exchange enviarem tráfego IPv6 para sua máquina, porque sua máquina não possui um endereço IPv6 que possa ser acessado / roteável por eles.

Então, o tráfego IPv6 é exibido na sua interface? Provavelmente coisas como o mDNS ( DNS multicast ) e outros protocolos que podem se conectar automaticamente no link local. Por exemplo, Apple Airplay e Windows Home Group .

Suas regras de firewall estão faltando uma coisa muito importante: ICMPv6 . O IPv6 usa o ICMP muito mais do que o IPv4, e não permitir que os pacotes ICMP entrem em vigor pode prejudicar gravemente o seu tráfego, porque você não receberá mensagens de erro relacionadas a esse tráfego. Isso pode causar longos atrasos / tempos limite. Permitir que o tráfego ICMPv6 normalmente não atrapalhe, então você pode adicionar isso às suas regras de firewall:

ip6tables -A INPUT -p icmpv6 -j ACCEPT

Se você quiser bloquear ping6 pacotes (embora eu realmente não entenda por que as pessoas ainda fazem isso nos dias de hoje, isso dificulta muito a conectividade de depuração) você pode adicionar isso como antes da linha ACCEPT anterior:

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

Isso é mais importante quando você obtém conectividade IPv6 global real à sua máquina, mas não vai doer se você já se preparar para isso: -)

    
por 06.01.2014 / 11:19
1

Sempre tomo a posição, ao gerenciar sistemas, de que qualquer coisa que eu não explique precise fornecer os serviços no sistema, que deve ser desativada. Esta filosofia vai para tudo, seja:

  • desinstalando software desnecessário
  • desativando uma área de trabalho da GUI em um servidor
  • desativando e / ou excluindo hardwares desnecessários
  • desativando o IPv6
  • desativando serviços desnecessários
  • etc.
por 06.01.2014 / 04:33
1

They also say if my ISP doesn't have ipv6 (in the lease, there's no ipv6 entry) I should disable ipv6 and had done this before by using ipv6.disable=1. I asked similar question at meta.stackoverflow.com, and I got an answer that I shouldn't disable ipv6.

é claro que você não veria uma concessão de endereço IPv6 com DHCP - é para isso que o DHCPv6 é: DHCP e DHCPv6 não são compatíveis.

A partir do momento que o IPv6 é desativado ou não: Se você não precisar dele e seu ISP ainda não o fornecer, desligue-o , mas prepare-se para sua introdução . Isso inclui remover / reprojetar tudo o que se baseia explicitamente em IP herdado, como endereços IP codificados ou usando transmissão.

A propósito, desligar o IPv6: tenha cuidado, pois a Microsoft considera o IPv6 uma parte integrante do sistema operacional, portanto, desligar o IPv6 pode afetar o suporte que você obtém deles.

    
por 29.07.2014 / 22:34

Tags