Маршрутизатор Ubuntu возвращает ICMP, административно запрещенный для всего IPv6

Я использую машину Ubuntu 14.04, названную ubu1404-150805-3, как сложенный двойным образом (IPv4 и IPv6) маршрутизатор. У меня есть клиентская машина, названная ubu1404-150805-2, который является также Ubuntu 14.04 и чей только доступ к сети через тот маршрутизатор Ubuntu. Это все хорошо работает для IPv4. Но каждый раз, когда клиент пытается отправить пакет IPv6 во что-либо помимо маршрутизатора, маршрутизатор возвращает пакет ICMP типа 3, кодируйте 9 (административно запрещенный). Клиент может ping6 маршрутизатор. Что идет не так, как надо и как я фиксирую его?

На маршрутизаторе Ubuntu существуют правила № ip6tables, и единственное правило iptables делает SNAT:

root@ubu1404-150805-3:~# iptables-save
# Generated by iptables-save v1.4.21 on Sun Sep 27 03:35:36 2015
*nat
:PREROUTING ACCEPT [33:3275]
:INPUT ACCEPT [4:744]
:OUTPUT ACCEPT [17:1207]
:POSTROUTING ACCEPT [1:60]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Sep 27 03:35:36 2015
root@ubu1404-150805-3:~# ip6tables-save
root@ubu1404-150805-3:~# 

Маршрутизатор имеет два NICs, один для восходящего потока и один для нисходящего потока. Это не имеет никакого собственного сервиса IPv6 от восходящего потока, таким образом, я также установил miredo там. Маршрутизатор не имеет никакой проблемы при выполнении вещей IPv6 самой:

root@ubu1404-150805-3:~# ping6 -c 1 2001:4860:4860::8844
PING 2001:4860:4860::8844(2001:4860:4860::8844) 56 data bytes
64 bytes from 2001:4860:4860::8844: icmp_seq=1 ttl=57 time=289 ms

--- 2001:4860:4860::8844 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 289.616/289.616/289.616/0.000 ms

Для сравнения вот клиент, переставший работать в этом:

mspreitz@ubu1404-150805-2:~$ ping6 -c 1 2001:4860:4860::8844
PING 2001:4860:4860::8844(2001:4860:4860::8844) 56 data bytes
From fddf:2::1 icmp_seq=1 Destination unreachable: Administratively prohibited

--- 2001:4860:4860::8844 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

tcpdump -i eth1 на маршрутизаторе показывает входящий запрос ping и "административно запрещенное" возвращение к клиенту.

tcpdump -i teredo на шоу маршрутизатора, что это передает запрос ping клиента! И никакой ответ ping не замечен.

root@ubu1404-150805-3:~# tcpdump -nne -i teredo
tcpdump: WARNING: teredo: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on teredo, link-type RAW (Raw IP), capture size 65535 bytes
03:57:39.349401 ip: fddf:2::b9ca:b0dc:8ae:4002 > 2001:4860:4860::8844: ICMP6, echo request, seq 1, length 64

Вот ip addr от маршрутизатора:

root@ubu1404-150805-3:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:e0:d0:b2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fee0:d0b2/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:f7:66:4a brd ff:ff:ff:ff:ff:ff
    inet 10.0.100.1/24 brd 10.0.100.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fddf:2::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fef7:664a/64 scope link 
       valid_lft forever preferred_lft forever
5: teredo: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 2001:0:53aa:64c:28fd:345a:d0ed:e570/32 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::ffff:ffff:ffff/64 scope link 
       valid_lft forever preferred_lft forever

И вот конфигурация на клиенте:

mspreitz@ubu1404-150805-2:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:72:df:14 brd ff:ff:ff:ff:ff:ff
    inet 10.0.100.2/24 brd 10.0.100.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fddf:2::b9ca:b0dc:8ae:4002/64 scope global temporary dynamic 
       valid_lft 85988sec preferred_lft 13988sec
    inet6 fddf:2::a00:27ff:fe72:df14/64 scope global dynamic 
       valid_lft 85988sec preferred_lft 13988sec
    inet6 fe80::a00:27ff:fe72:df14/64 scope link 
       valid_lft forever preferred_lft forever

Маршрутизатор настроен, чтобы передать одноадресной передаче пакеты IPv6 и IPv4:

root@ubu1404-150805-3:~# sysctl -a | grep forward
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.teredo.forwarding = 1
net.ipv4.conf.teredo.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.eth0.forwarding = 1
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth1.forwarding = 1
net.ipv6.conf.eth1.mc_forwarding = 0
net.ipv6.conf.lo.forwarding = 1
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.teredo.forwarding = 1
net.ipv6.conf.teredo.mc_forwarding = 0

И маршрутизатору выключили конфиденциальность IPv6:

root@ubu1404-150805-3:~# sysctl -a | grep tempaddr
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.eth0.use_tempaddr = 0
net.ipv6.conf.eth1.use_tempaddr = 0
net.ipv6.conf.lo.use_tempaddr = 0
net.ipv6.conf.teredo.use_tempaddr = -1

Я сомневаюсь, что это имеет значение, но я выполняю radvd и rdnssd на маршрутизаторе. Клиент настроен в /etc/network/interfaces использование статического метода и для IPv4 и для IPv6, с autoconf 1 (т.е. разрешающий SLAAC) в v6 случае.

Вот информация о версии с сервера:

root@ubu1404-150805-3:~# uname -a
Linux ubu1404-150805-3 3.13.0-61-generic #100-Ubuntu SMP Wed Jul 29 11:21:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

И это - то же на клиенте:

mspreitz@ubu1404-150805-2:~$ uname -a
Linux ubu1404-150805-2 3.13.0-61-generic #100-Ubuntu SMP Wed Jul 29 11:21:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

BTW, обеими из этих машин является VirtualBox (версия 4.3.30) VMs. Я использую внутреннюю сеть VirtualBox на eth1 сервера и eth0 клиента. eth0 сервера является NATted к хосту, Mac под управлением MacOS 10.10.5.

1
задан 27 September 2015 в 11:05

1 ответ

Морской древоточец только обеспечивает IPv6 для самого хоста, таким образом, Вы не можете использовать его для обеспечения IPv6 на LAN. Если Вы хотите подсети, можно направить Вас, должен использовать туннельную службу как tunnelbroker.net или SixXS.

Кроме того, Морской древоточец является ужасно ненадежным протоколом.

0
ответ дан 27 September 2015 в 21:05
  • 1
    Это помогло мне тогда внезапно, Ctrl-Alt-t и ключи медиа объема прекратили работать над моей машиной. Обратите внимание что я didn' t умеряют с lightdm или чем-либо еще o_O. – svenmeier 18 December 2016 в 09:16

Другие вопросы по тегам:

Похожие вопросы: