Назад | Перейти на главную страницу

Пересылка IPv6 не работает

У меня есть сервер в центре обработки данных с собственным подключением IPv6. (В моем распоряжении блок / 48.)

Я хочу использовать этот сервер в качестве туннельного сервера ipv6 через openvpn, но не могу заставить его работать полностью.

Мой сервер: Linux, Centos 5.2 eth0 с двойным стеком ipv4 / ipv6

ip addr list:
eth0
inet aa.bb.cc.dd/24 (my global IP address)
inet6 2001:aaaa:bbb::2/48 (2001:aaaa:bbb::1 is the default GW of my ISP)

sit2
link/sit 10.8.0.1 peer 10.8.0.2
inet6 2001:aaaa:bbb:2::1/64

tun0
inet 10.8.0.1 peer 10.8.0.2/32

Мой клиент: Mac OS 10.6

tun0: 10.8.0.2 --> 10.8.0.1
gif0 2001:aaaa:bbb:2::2 --> 2001:aaaa:bbb:2::1 prefixlen 128

маршрут по умолчанию gw 2001: aaaa: bbb: 2 :: 1 (ip моего сервера в интерфейсе sit)

Я думаю, что со стороны Mac все в порядке, поскольку traceroute6 на ipv6.google.com дает 2001: aaaa: bbb: 2 :: 1 в качестве следующего перехода, но там он останавливается. Пинг ipv6.google.com с сервера работает. Ip6tables выключен, и я выдал "1" в / proc / sys / net / ipv6 / conf / all / forwarding.

Вывод из ip6tables -L:

ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Вывод sysctl -a | grep forward | grep ipv6:

net.ipv6.conf.sit2.forwarding = 1
net.ipv6.conf.eth1.forwarding = 1
net.ipv6.conf.eth0.forwarding = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.lo.forwarding = 1

Что мешает моему маршрутизатору пересылать пакеты между двумя его интерфейсами?

Размещение / 64 внутри этого / 48 пространства за другим маршрутизатором (ваш diy tunnelbox) не будет работать, потому что маршрутизатор вашего интернет-провайдера не направляет трафик для этого / 64 обратно в ваш туннельный ящик, но ожидает, что хосты будут непосредственно в локальной подсети .

Ваш провайдер не должен указывать / 48 на ссылке, а должен использовать вместо него / 64.

Либо вам нужно будет использовать магию proxy-arp (не было, не стал бы этого делать), либо вы скажете своему интернет-провайдеру, чтобы он поместил / 64 в ссылку, например первый / 64 в / 48. Затем ваш интернет-провайдер также должен добавить маршрут к какой-либо другой части вашего / 48 через ваш туннельный сервер. (был там, пусть это работает у моего интернет-провайдера в colocation). Можно попросить направить / 56 внутри / 48 к вашему туннельному ящику, чтобы вы могли создавать туннели с одним или несколькими / 64 на другой стороне. Для самих туннелей вы также можете использовать / 64 из / 56 или использовать / 64 с чем-то вроде / 80 в качестве самого туннеля.

(Примечание: 2001: A000 :: / 20 - это адресное пространство, используемое APNIC, если вы хотите скрыть свои фактические адреса, лучше использовать диапазон адресов, например 2001: db8 :: / 32, который предназначен для использования в документации. цель)

У меня была точно такая же проблема, как он описал. Мне действительно пришлось установить проксирование arp с помощью ip. Также проверьте свои маршруты, чтобы увидеть, использует ли он ваш сервер в качестве шлюза, а не только интерфейс.