Yang saya coba lakukan adalah merutekan lalu lintas IPv6 melalui terowongan vpn. Dengan begitu, saya harus dapat menggunakan IPv6 di jaringan yang tidak mendukung IPv6.
Saya memiliki VPS yang memiliki blok IPv6 yang ditetapkan. Bagian dari blok ini yang ingin saya gunakan untuk klien openvpn. Rentang yang saya pikirkan adalah 2001:db8::111:800:0/112
(awalan dianonimkan), karena openvpn hanya mendukung / 64 dan / 112 sebagai subnet.
IPv6 melalui terowongan sudah berfungsi, dari klien, saya bisa ping server ( 2001:db8::111:800:1
), dan juga antarmuka di server ( 2001:db8::111:100:100
dan 2001:db8:216:3dfa:f1d4:81c0
).
Padahal, ketika mencoba melakukan ping google.com dari klien, saya tidak mendapat respons (waktu ping). Untuk men-debug masalah ini, saya telah menggunakan tcpdump untuk menangkap lalu lintas di server, dan saya bisa melihat paket ping keluar, tetapi tidak ada balasan yang datang kembali. Menambahkan aturan log ke ip6tables menunjukkan hal yang sama, paket keluar, tetapi tidak ada yang masuk.
Saya menggunakan alat traceroute online yang mendapat batas waktu dari server saya. Saya juga mencoba untuk mengatur ip langsung pada antarmuka, yang tidak mengakibatkan ip ( 2001:db8::111:800:1001
) dapat dijangkau, jadi saya pikir ini adalah masalah routing.
Saya telah mengaktifkan penerusan untuk ipv6 melalui /proc/sys/net/ipv6/conf/all/forwarding
. ip6tables memiliki kebijakan yang memungkinkan semua rantai.
Pertanyaan saya adalah, apa sebenarnya yang diperlukan linux untuk menerima paket untuk ip yang tidak ditugaskan ke antarmuka dan merutekannya lebih jauh? Hanya rute yang ada sepertinya tidak cukup.
Ini adalah pengaturan untuk klien dan server saya. Harap beri tahu jika diperlukan lebih banyak informasi.
Klien
# 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
Server
# 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
target tabel mentah iptables (mungkin tidak begitu banyak di sini) ip neighbour
,, dan ip route get
. Juga, harap tentukan siapa yang melakukan ping google.ca
.
POSTROUTING ... MASQUERADE
dinat
tabel. Tapi saya tidak yakin saya mengerti sepenuhnya. Apakah Anda mencoba melakukan tunnel traffic IPv6? Jika demikian, apakah Anda memiliki fasilitas masing-masing diatur? Apakah-p ipv6
paket diizinkan dalam aturan IPv4 (!)?