Маршрутизация трафика IPv6 через pptpd Debian в туннель IPv6 Hurricane Electric
Я установил туннель, используя сервисы Hurricane Electric на компьютере Debian. Кажется, все в порядке; Я могу ping6 ipv6.google.com
и откройте его в links
,
Я также установил PPTP демон на машине. (Да, я читал, что PPTP небезопасен; это в основном для экспериментальных целей.) Когда я подключаюсь к этому демону PPTP с помощью Mac OS X, IPv4 работает нормально.
Однако я не могу заставить работать маршрутизацию трафика IPv6. OS X не получает IPv6-адрес через PPTP и игнорирует объявления, используя radvd
, который, кажется, демон для объявления о существовании маршрутизатора IPv6. Чтобы уточнить: я вижу сообщения маршрутизатора, отправленные radvd
появляются в Wireshark на интерфейсе ppp0 машины OS X.
В целом, это не производственная и не долгосрочная установка, просто то, что я хотел бы заставить работать (в противном случае я мог бы публиковать сообщения на ServerFault). Поэтому меня не волнует тот факт, что, если машина перезагружается, половина настроек отключается до тех пор, пока не будет сброшен вручную. На самом деле, это плюс для меня, в данном случае.
/ etc / network / interfaces (фрагмент)
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:dead:beef:f00d::2
netmask 64
endpoint 216.66.86.114
ttl 255
gateway 2001:dead:beef:f00d::1
/etc/pptpd.conf
option /etc/ppp/pptpd-options
localip 10.0.101.1
remoteip 10.0.101.2-200
/ и т.д. / ррр /pptpd-опции
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
ipv6 ,
/ и т.д. / ррр / CHAP-секреты
ivucica pptpd THEPASSWORDHERE 10.0.101.2 10.0.101.3 10.0.101.4 10.0.101.5
/etc/radvd.conf
interface ppp0
{
AdvSendAdvert on;
prefix 2001:dead:beef:f00d::/64
{
};
};
Я включил пересылку ipv6:
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
И да, я перезагрузил radvd
всякий раз, когда я переподключал / пересоздал устройство ppp0.:-)
Что мне не хватает?
2 ответа
Оказывается, с моей настройкой было несколько проблем. Давайте документируем все!
Клиентская ОС
Mac OS X не особенно любит IPv6 поверх PPP. Используйте следующее после того, как соединение было установлено:
sudo ipconfig set ppp0 AUTOMATIC-V6
sudo route add -inet6 default -interface ppp0
Предыдущий, кажется, заставляет OS X придерживаться рекламных объявлений маршрутизатора; последний добавляет маршрут по умолчанию для IPv6. (Теперь, если только версия операционной системы с определенной route
предоставлена -inet6
Я был бы счастливым деревянным мальчиком.)
Также обратите внимание, что OS X будет игнорировать любой адрес, который должен был быть согласован по IPv6, и настроит только локальный адрес. Это может помешать маршрутизации к OS X.
С другой стороны, Windows 8 (из всех систем!) С радостью подобрала адрес, отправленный по протоколу PPP, приняла к сведению рекламу маршрутизатора и в целом сконфигурировала себя без нареканий. PPTP действительно хорошо работает в Windows.
сервер
Первое, что я пропустил, было то, что туннельный брокер Hurricane Electric фактически назначает префиксы TWO /64; один должен быть предназначен исключительно для использования клиентом, а другой предназначен для маршрутизации дополнительных клиентов (таких как клиент PPTP). А если вам нужно больше адресов (или префиксов!), Вы даже можете получить префикс /48. (С IPv6 это означает, что есть больше битов для "вашего" использования; префикс HE занимает "только" 48 битов. Это дает вам еще несколько битов для контроля перед автоматически сгенерированным суффиксом, созданным из MAC-адреса или даже созданным случайным образом, запускает и принимает последние 64 бита. Теоретически вы можете шевелиться и подсеть даже с 64-битными запасными, но я видел странное поведение на Windows 8 или OS X, поэтому я бы не стал слишком полагаться на это.)
Вместо настройки radvd
напрямую и запускать его как сервер - просто не настраивайте его глобально. То есть не запускайте его как сервис на Debian.
Вместо этого давайте последуем примеру Конрада Розенбаума на Silmor.de и radvd
настроен после pppd
создает интерфейс PPP.
Настройте подключение IPv6. Я использую Hurricane Electric; Я настроил это следующим образом:
# hurricane electric tunnel # based on: http://www.tunnelbroker.net/forums/index.php?topic=1642.0 auto he-ipv6 iface he-ipv6 inet6 v4tunnel address 2001:470:UUUU:VVVV::2 netmask 64 endpoint 216.66.86.114 ttl 255 gateway 2001:470:UUUU:VVVV::1 ## from http://lightyearsoftware.com/2011/02/configure-debian-as-an-ipv6-router/ # I did not set up the routing of the /64 nor the /48 prefix here, but # this would ordinarily do it. #up ip link set mtu 1280 dev he-ipv6 #up route -6 add 2001:470:WWWW:VVVV::/64 he-ipv6 # Note that Hurricane Electric provides different /64 IPv6 prefixes # for the client (UUUU:VVVV) and routing (WWWW:VVVV). # And the /48 prefix is very different altogether.
Установите pptpd. (Конечно, обратите внимание на небезопасность PPTP в качестве протокола и подумайте об использовании OpenVPN или какой-либо другой альтернативы.)
редактировать
/etc/ppp/pptpd-options
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp nodefaultroute lock nobsdcomp ipv6 ::1,::2
Обратите внимание, что последняя строка отличается от текста в моем вопросе. Вы присваиваете некоторые статические адреса, которые могут соблюдаться вашей клиентской ОС или нет. (OS X, кажется, игнорирует их, но Windows использует их.)
Создайте пользователей для PPTP. Фильтры второго столбца на основе
name
аргумент вpptpd-options
, редактировать/etc/ppp/chap-secrets
:ivucica pptpd AHyperSecretPasswordInPlainText 10.0.101.2 10.0.101.3 10.0.101.4
Вы должны быть в состоянии заменить адреса
*
вместо того, чтобы перечислять их вручную. Я не пробовал это.Назначьте своим пользователям PPTP некоторые префиксы IPv6. ПРИМЕЧАНИЕ: это используется исключительно сценарием, который я перечислю ниже, который получен из сценария Конрада.
редактировать
/etc/ppp/ipv6-addr
:ivucica:1234 littlejohnny:1235
Добавить новый файл
/etc/ppp/ipv6-up.d/setupradvd
:#!/bin/bash ADDR=$(grep ^$PEERNAME: /etc/ppp/ipv6-addr |cut -f 2 -d :) if test x$ADDR == x ; then echo "No IPv6 address found for user $PEERNAME" exit 0 fi # We'll assign the user a /64 prefix. # I'm using a Hurricane Electric-assigned /48 prefix. # Operating systems seem to expect to be able to assign the # last 64 bits of the address (based on ethernet MAC address # or some other identifier). So try to obtain a /48 prefix. # If you only have a /64 bit prefix, you can try to assign a # /80 prefix to your remote users. It works, but I'm only now # trying to enable these users to have routing. USERPREFIX=2001:470:XXXX:$ADDR USERPREFIXSIZE=64 USERPREFIXOURADDRESS=1 USERPREFIXUSERADDRESS=2 # Add the address for your side of the tunnel to the PPP device. ifconfig $IFNAME add $USERPREFIX::$USERPREFIXOURADDRESS/$USERPREFIXSIZE # establish new route # (when a packet is directed toward user subnet, send it to user ip) route -6 add $USERPREFIX::/$USERPREFIXSIZE gw $USERPREFIX::$USERPREFIXUSERADDRESS #generate radvd config RAP=/etc/ppp/ipv6-radvd/$IFNAME RA=$RAP.conf echo interface $IFNAME >$RA echo '{ AdvSendAdvert on; MinRtrAdvInterval 5; MaxRtrAdvInterval 100;' >>$RA echo ' prefix' $USERPREFIX::/$USERPREFIXSIZE '{};' >>$RA # Instead of your DNS... #echo ' RDNSS $USERPREFIX::$USERPREFIXOURADDRESS {}; };' >>$RA # ...try assigning the Google DNS :) echo ' RDNSS 2001:4860:4860::8888 {}; }; ' >> $RA # The creation of radvd configuration could be more readable, but whatever. # Start radvd /usr/sbin/radvd -C $RA -p $RAP.pid exit 0
Не забудьте chmod скрипт, чтобы сделать его исполняемым
pppd
:chmod 755 /etc/ppp/ipv6-up.d/setupradvd
Сценарий извергает
radvd
Конфигурация в/etc/ppp/ipv6-radvd/
… Убедитесь, что папка существует!mkdir /etc/ppp/ipv6-radvd
Также добавьте
/etc/ppp/ipv6-down.d/setupradvd
(и сделать его исполняемым!) - дословно взято из Конрада:#!/bin/bash RAP=/etc/ppp/ipv6-radvd/$IFNAME kill `cat $RAP.pid` || true rm -f $RAP.*
А также
chmod 755 /etc/ppp/ipv6-down.d/setupradvd
Я не проверял использование DHCPv6 для распространения информации о маршрутизации, адресов или DNS, особенно после rtadv
должен выполнять эти роли. Это также не помогло бы мне, потому что в случае Mountain Lion OS X все еще не поставляется с клиентом DHCPv6 (возможно, намеренно; девять из десяти стоматологов, большинство экспертов по IPv6, согласны с тем, что DHCP - это зло).
Еще раз, пожалуйста, обратите внимание на комментарии Майкла о безопасности PPTP; рассмотреть возможность использования OpenVPN в производстве.
Да, у Конрада Розенбаума также есть хорошее руководство по IPv6 через OpenVPN.:-)
Похоже, что Poptop не поддерживает IPv6. И его сопровождающие рекомендуют не использовать его в любом случае по соображениям безопасности.
Известно, что протокол PPTP является ошибочным протоколом. Разработчики протокола Microsoft рекомендуют не использовать его из-за неотъемлемых рисков. Многие люди используют PPTP в любом случае из-за простоты использования, но это не значит, что он менее опасен. Сопровождающие клиенты PPTP и Poptop рекомендуют вместо этого использовать OpenVPN (на основе SSL) или IPSec.
Последние версии OpenVPN поддерживают IPv6, так что это, вероятно, ваш лучший выбор при переходе.