Endereço de loopback customizado IPv6 e pingado de outro host

1

Posso ou como adicionar endereço IPv6 personalizado na interface de loopback do host A e fazer o ping do host B?

Eu tentei adicionar algo assim: ::ffff:5:4:3:2 , mas ip -6 route diz que esse destino é unreachable com error 101 , mas posso fazer ping dele no host A. Quando eu definir esse endereço em tap0 , por exemplo, route é alcançável, mas ainda "unpingable" do host B. Eu não consigo entender quais endereços o loopback permite, porque meu custom está inacessível, porque eu posso pingar do host A, como habilitar route_localnet e rp_filter para IPv6.

OS: ArchLinux, kernel 4.10.

Eu sei como fazer isso para o IPv4, mas o IPv6 funciona completamente (ou não?) diferente.

    
por marar 24.05.2017 / 07:03

1 resposta

0

Sim. Assim como você pode fazer isso com o IPv4, isso é chamado de roteamento. Você precisa dizer a um host como alcançar outro host.

Digamos que temos dois hosts, A e B.

O host A tem seu endereço de loopback padrão de ::1 , bem como seu endereço personalizado na interface de loopback. (No meu exemplo, o endereço personalizado será fd56:dcaa:2099::1 . Escolhi isso de um endereço local exclusivo. Você deve usar endereços ULA para propósitos como estes.)

O host A também tem uma interface Ethernet, vamos chamá-lo de eth0 . No IPv6, ele terá um endereço local de link IPv6. Pode ter outros endereços IPv6. Você pode encontrá-los executando ip -6 addr eth0 . Aqui está um exemplo do meu sistema:

$ ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2601:404:ce00:adc0:9d6c:9e16:a9a9:b03b/64 scope global temporary dynamic 
       valid_lft 593594sec preferred_lft 74600sec
    inet6 2601:404:ce00:adc0:bc87:129a:ed5d:814/64 scope global temporary deprecated dynamic 
       valid_lft 78769sec preferred_lft 0sec                                                                                                                                                                                      
    inet6 2601:404:ce00:adc0:1453:3734:6742:4500/64 scope global mngtmpaddr noprefixroute dynamic                                                                                                                                 
       valid_lft 2591820sec preferred_lft 604620sec                                                                                                                                                                               
    inet6 fe80::5520:a68f:5416:a68c/64 scope link                                                                                                                                                                                 
       valid_lft forever preferred_lft forever

Nessa lista estão quatro endereços diferentes (você pode ter mais). Para nossos propósitos, você quer aquele que diz "link de escopo" depois dele. No meu sistema (e no meu exemplo), isso é fe80::5520:a68f:5416:a68c .

No host B, vamos também ter uma interface eth0 . Para permitir que o host B atinja o endereço de loopback especial do host A, o host B precisa saber onde encontrá-lo. Você faz isso adicionando uma entrada à tabela de roteamento do host B:

# ip route add fd56:dcaa:2099::1 via fe80::5520:a68f:5416:a68c dev eth0

O que estamos fazendo é dizer ao kernel do host B que ele pode alcançar fd56:dcaa:2099::1 (endereço especial do host A em sua interface de loopback) em fe80::5520:a68f:5416:a68c (endereço de link local do host A em sua interface eth0 ), mas esse host B precisa tentar alcançar fe80::5520:a68f:5416:a68c da interface host B's eth0 . (Essa é a coisa complicada sobre os endereços de link local. O endereço em si só é significativo no contexto de um dado segmento de rede. Estude o modelo de rede OSI para obter mais detalhes.)

Depois de ter essa entrada na tabela de roteamento do host B, você deve conseguir fazer ping do endereço B do host A, já que o host B agora sabe usar o endereço local do link do host A como um roteador para alcançar esse endereço.

    
por 25.05.2017 / 15:03