Eu quero rotear um ipv6 ip para um contêiner lxc, mas os pacotes não são encaminhados. Eu não quero ligar os contêineres lxc para eth0 e não quero usar o autoconfig. Além disso, eu só tenho um /64
para o host, então eu preciso usar uma rede menor para as VMs. Eu escolhi um /112
por enquanto, talvez eu pudesse usar uma rede um pouco maior, se necessário.
Eu acho que o problema é o roteamento, não o contêiner. Aqui está minha configuração:
Anfitrião:
# the host already has working ipv6, empty ip6tables FORWARD table with policy ACCEPT
ip -6 addr add prefix::1/112 dev lxcbr
ip -6 route show|grep prefix
# prefix::/112 dev lxcbr proto kernel metric 256
sysctl net.ipv6.conf.eth0.forwarding
# net.ipv6.conf.eth0.forwarding = 1
sysctl net.ipv6.conf.lxcbr.forwarding
# net.ipv6.conf.lxcbr.forwarding = 1
VM:
ip -6 addr add prefix::2/112 dev eth0
ip -6 route add default via fe80:: dev eth0 # routing via prefix::1 does not work either
ip -6 route show
# prefix::/112 dev eth0 proto kernel metric 256
# fe80::/64 dev eth0 proto kernel metric 256
# default via fe80:: dev eth0 metric 1024
Trabalhando (VM):
ping6 prefix::1 # host
Trabalhando (host):
ping6 prefix::2 # vm
Não está funcionando (VM):
ping6 google.com
# PING google.com (2a00:1450:4001:805::1007): 48 data bytes
# --- google.com ping statistics ---
# 7 packets transmitted, 0 packets received, 100% packet los
tcpdump no host:
tcpdump -i lxcbr icmp6
# 13:20:44.088814 IP6 prefix::1 > fra07s32-in-x07.1e100.net: ICMP6, echo request, seq 0, length 56
# 13:20:45.089268 IP6 prefix::1 > fra07s32-in-x07.1e100.net: ICMP6, echo request, seq 1, length 56
# [...]
tcpdump -i eth0 icmp6
# [no output]
ip6tables com -A FORWARD -j LOG
também não registra nenhum pacote.
EDIT: Porque todo mundo reclama de redes menores que /64
: O problema persiste com /64
na interface. O problema é que nenhum pacote está entrando na fila FORWARD
do iptables, ao usar uma rota estática de uma interface (virtual) para outra interface (física).
A configuração com uma rede menor é o que gostaria de ter, quando está funcionando, já que o meu provedor quer uma taxa bastante grande para mais redes (perto de 50% do aluguel do servidor). Mas para testes eu posso usar todo o /64
ou grandes redes de fd/8
se isso ajudar no teste.