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

Маршрутизатор Linux с двойным стеком, не может пересылать префикс IPv6

У меня здесь небольшой офис с несколькими рабочими станциями, и я хотел бы реализовать небольшой сервер для таких вещей, как прокси-сервер, самба и т. Д. Это топология указанной сети:

+-----+   dynamic    +--------+        +-------------------+                 +--+workstation1
|     |  /56 prefix  |        |        |   Debian server   |        +--------+
| ISP +--------------+ Router +-+eth0+-+                   +-+eth1+-+ switch +--+workstation2
|     |   dynamic    |        |        | (squid,dhcp,etc.) |        +--------+
+-----+ IPv4 address +--------+        +-------------------+                 +--+workstationX

Я хотел бы, чтобы сервер назначал глобальные (возможно, локальные) адреса IPv6 и частные адреса IPv4 всем устройствам, подключенным к eth1 через коммутатор. Мне удалось заставить маскировку NAT работать с dnsmasq и iptables, но я не могу получить трафик IPv6 или даже распределить адреса IPv6 для работы. На вкладке DHCP-сервера IPv6 маршрутизатор имеет три различных параметра:

Я пробовал следовать это руководство. В нем описывается, как настроить сервер DHCPv6 с помощью dnsmasq. У меня есть рабочий eth0, который получает глобальный, уникальный локальный и локальный адрес ссылки. Но мой интерфейс eth1 никогда не получает глобального IPv6-адреса, только локальный для ссылки. Все устройства за сервером имеют рабочий IPv4-адрес, но я не могу установить статический IP-адрес, потому что префикс динамический и меняется каждую ночь. В настоящее время я застрял на этом этапе.

Вот это мои файлы конфигурации.

Спасибо за помощь.

Я нашел способ. Мой интерфейс eth0 получил его IP из-за включенного net.ipv6.conf.eth0.accept_ra = 2 в /etc/sysctl.conf. Wide-dhcpv6-client снова попытался установить адрес eth0, но он уже был установлен в объявлении маршрутизатора. Итак, если вы хотите, чтобы wide-dhcpv6-client устанавливал ip только для внутреннего интерфейса (eth1 в моем случае) вы должны опустить

id-assoc na 1 {
    # id-assoc for eth1
};

часть из опубликованного руководства. В противном случае dhcp6c остановится, увидев, что адрес уже используется.

Вот как теперь выглядит мой dhcp6c.conf

interface eth0 {
        send ia-pd 1;
        request domain-name;
        request domain-name-servers;
        script "/etc/wide-dhcpv6/dhcp6c-script";
};

id-assoc pd 1 {
        prefix ::/64 infinity;
        prefix-interface eth1 {
                sla-len 0;
                sla-id 1;
                ifid 1;
        };
};

Теперь все работает как шарм. Надеюсь, эта информация поможет любому, у кого есть подобная проблема.

Вам нужно будет назначить IPv6-адрес для eth1 поскольку он не может быть настроен автоматически. Выберите /64 адрес из вашего /56 хотя вы можете использовать свой /56. Я использовал префикс 2001:0db8:a1b2:c2d3::/64 в примере ниже.

# This is an IPv6 interface
iface eth1 inet6 static
    address  2001:0db8:a1b2:c2d3::1
    netmask  64