在 Linux 上使用 radvd 分發 IPv6 位址

前言

如果你正要透過 Linux 當作是一台路由器,那你可能會需要使用 DHCP 伺服器發送 IPv4 位址,但 IPv6 或許你就會需要 radvd 了。

IPv6 具有一個自動配置,名為 SLAAC 的機制。這可以讓設備連上網路時,在不需要傳統 DHCP 伺服器的情況下,自己產生一個有效的 IPv6 位址。但這一切都需要路由器向其他設備發送 RA 通告 才能完成,這時候你就會需要 radvd 的幫助了。

操作方式

首先需要在 Linux 上安裝 radvd 這個套件。

sudo apt-get install -y radvd

接著我們需要配置 /etc/radvd.conf 這個檔案,下面這些是我的配置可以參考。

interface ens19 {
    AdvSendAdvert on;
    prefix fd00::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
        AdvValidLifetime 3600;
        AdvPreferredLifetime 3600;
    };
    RDNSS fd00::1 {};
};

在上面的範例,可以看到我將網卡設定在 ens19,這意味著他會向這個網路介面卡發送通告。而 fd00::/64 就是我想要宣告的網段,下面 RDNSSfd00::1 則是指定的 DNS 伺服器。

完成後使用以下命令重啟 radvd

systemctl restart radvd

現在,你可以讓其他設備連上這個網路,看能不能自動獲取 IPv6 位址囉!