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:100i 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
TRACEdocelowego 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 ... MASQUERADEwnattabeli. 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 ipv6pakiety są dozwolone w regułach IPv4 (!)?