Staram się kierować ruchem IPv6 przez tunel VPN. W ten sposób powinienem móc używać IPv6 w sieci, która nie obsługuje IPv6.
Mam VPS, który ma przypisany blok IPv6. Część tego bloku chcę użyć dla klientów openvpn. Zasięg, który miałem na myśli to 2001:db8::111:800:0/112
(prefiks jest anonimowy), ponieważ openvpn obsługuje tylko / 64 i / 112 jako podsieci.
IPv6 przez tunel już działa, od klienta mogę pingować server ( 2001:db8::111:800:1
), a także interfejsy na serwerze ( 2001:db8::111:100:100
i 2001:db8:216:3dfa:f1d4:81c0
).
Chociaż podczas próby pingowania google.com z klienta nie otrzymuję odpowiedzi (limit czasu pingowania). Aby rozwiązać ten problem, użyłem programu tcpdump do przechwytywania ruchu na serwerze i widzę, że pakiety ping wychodzą, ale odpowiedzi nie wracają. Dodanie reguł dziennika do ip6tables pokazuje to samo, pakiety wychodzą, ale nic nie nadchodzi.
Użyłem internetowego narzędzia traceroute, które dostało limit czasu z mojego serwera. Próbowałem również ustawić ip bezpośrednio w interfejsie, co powoduje, że ip ( 2001:db8::111:800:1001
) jest osiągalny, więc myślę, że to problem z routingiem.
Włączyłem przekazywanie dla IPv6 przez /proc/sys/net/ipv6/conf/all/forwarding
. ip6tables ma zasady zezwalające na wszystkie łańcuchy.
Moje pytanie brzmi: co dokładnie jest potrzebne, aby linux zaakceptował ten pakiet dla adresu IP, który nie jest przypisany do interfejsu i skierował go dalej? Po prostu istniejąca trasa nie wydaje się wystarczająca.
Oto konfiguracja mojego klienta i serwera. Daj mu znać, jeśli potrzebujesz więcej informacji.
Klient
# ip -6 addresses
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1001/112 scope global
valid_lft forever preferred_lft forever
# ip -6 routes
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2000::/3 dev tun0 metric 1024
serwer
# ip -6 address
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8:216:3dfa:f1d4:81c0/64 scope global dynamic
valid_lft 86254sec preferred_lft 14254sec
inet6 2001:db8::111:100:100/128 scope global
valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1/112 scope global
valid_lft forever preferred_lft forever
# ip -6 route
2001:db8::111:100:100 dev eth0 proto kernel metric 256
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2001:db8::/64 dev eth0 proto kernel metric 256 expires 86194sec
default via fe80::230:48ff:fe94:d6c5 dev eth0 proto ra metric 1024 expires 1594sec
TRACE
docelowego surowego stołu iptables (może nie tyle tutaj) ip neighbour
, i ip route get
. Proszę również określić, kto pinguje google.ca
.
POSTROUTING ... MASQUERADE
wnat
tabeli. Ale nie jestem pewien, czy rozumiem całkowicie. Czy próbujesz tunelować ruch IPv6? Jeśli tak, czy masz skonfigurowane odpowiednie urządzenia? Czy-p ipv6
pakiety są dozwolone w regułach IPv4 (!)?