Posso ou como posso adicionar um endereço IPv6 personalizado na interface de loopback do host A e executar ping no host B?
Eu tentei adicionar algo assim ::ffff:5:4:3:2
, no entanto ip -6 route
, diz que este destino é unreachable
com error 101
, mas posso fazer ping do host A. Quando defino esse endereço tap0
, por exemplo, a rota é acessível, mas ainda "não pingável" do host B Não consigo entender quais endereços o loopback permite, por que meu costume está inacessível, por que posso fazer ping do host A, como habilitá-lo route_localnet
e rp_filter
para IPv6.
SO: ArchLinux, kernel 4.10.
Eu sei como fazer isso para IPv4, mas o IPv6 funciona completamente (ou não?) diferente.
Responder1
Sim. Assim como você pode fazer isso com IPv4, isso é chamado de roteamento. Você tem que dizer a um host como entrar em contato com outro host.
Digamos que temos dois hosts, A e B.
O Host A tem seu endereço de loopback padrão, ::1
bem como seu endereço personalizado na interface de loopback. (No meu exemplo, o endereço personalizado será fd56:dcaa:2099::1
. Eu escolhi isso em um endereço local exclusivo. Você deveusar endereços ULApara fins como estes.)
O Host A também possui uma interface Ethernet, vamos chamá-la de eth0
. No IPv6, 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ê deseja aquele que diz "link de escopo" depois dele. No meu sistema (e no meu exemplo), isso é fe80::5520:a68f:5416:a68c
.
No host B, também temos uma interface eth0
. Para permitir que o host B alcance 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 acessar fd56:dcaa:2099::1
(endereço especial do host A em sua interface de loopback) em fe80::5520:a68f:5416:a68c
(endereço local de link do host A em sua eth0
interface), mas que o host B precisa tentar acessar fe80::5520:a68f:5416:a68c
deanfitrião B eth0
interface. (Essa é a parte complicada dos endereços locais de link. O endereço em si só tem significado no contexto de um determinado 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ê poderá executar ping no endereço personalizado do host A a partir do host B, 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.
Responder2
Porque os endereços de loopback e a interface são para um único host. Não se destina à comunicação com outro dispositivo.