Jan 23, 2021

EdgerouterXにNDプロキシーを入れて公開サーバもIPv6通信に対応します。

前回、EdgerouterX に ND プロキシーを導入し、自宅内の LAN 側も IPv6 対応しました。今回は、公開サーバ側のネットワークを PPPoE(IPv4)+IPoE(IPv6)にしたいと思います。前回の設定に公開サーバのネットワークを追加し IPv6 の Firewall に https ポートを追加し、最後に IPv6 テストサイトを活用して確認します。

公開サーバ LAN 側に IPv6 を割当てます

公開サーバ側 LAN1(eth1) に IPv6 の設定を追加したいと思います。内容は前回 swithc0 に設定した内容と同じです。これで LAN1 にも IPv6 のアドレスが設定されます。

interfaces {
    :
  ethernet eth1 {
     address 192.168.10.1/24
     description LAN1
     duplex auto
     firewall {
         in {
             modify LAN_PBR
         }
     }
     ipv6 {
         address {
             eui64 2409:xx:xx:xx:xx:xx:xx:xx/64 eth0に割り振られたアドレスを設定
         }
         dup-addr-detect-transmits 1
         router-advert {
             cur-hop-limit 64
             link-mtu 1500
             managed-flag false
             max-interval 600
             other-config-flag true
             prefix ::/64 {
                 autonomous-flag true
                 on-link-flag true
                 valid-lifetime 2592000
             }
             reachable-time 0
             retrans-timer 0
             send-advert true
         }
     }
     speed auto
  }
}

eht1 の ip アドレスを確認します。IPv6 のネットワークアドレスがローカル、グローバルが設定されていると思います。

$ ip addr show eth1
5: eth1@itf0: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether f0:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 brd 192.168.10.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 2409:xx:xx:xx:xx:xx:xx:xx/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::xx:xx:xx:xx/64 scope link
       valid_lft forever preferred_lft forever

ND プロキシーコンフィグファイルの修正

LAN1(eth1)にも ND(Neighbor Discovery)が通るように設定し、WAN 側と LAN1(eth1)側も IPv6 の通信をするようにします。 少し無理矢理感がありますが、eht1 を追加

/etc/ndppd.conf
proxy eth0 {
   router no
   timeout 500
   autowire yes
   keepalive yes
   retries 3
   ttl 30000
   rule ::/0 {
      iface switch0
   }
  rule 2409:xx:xx:xx:xx:xx:xx:xx { 公開サーバのIPv6のアドレスを指定
      iface eth1
   }
}
:
proxy eht1 {
   router yes
   timeout 500
   autowire yes
   keepalive yes
   retries 3
   ttl 30000
   rule ::/0 {
      auto
   }
}

IPv6 の Firewall に https ポートを追加します。

roule 30 に https を追加して、WAN 側から IPv6 tcp/https が通過できるようにします。

 ipv6-name WANv6_IN {
     default-action drop
     description "WANv6 to LAN"
     enable-default-log
     rule 10 {
         action accept
         description "Allow established/related"
         state {
             established enable
             related enable
         }
     }
     rule 20 {
         action accept
         description "Allow IPv6 ICMP"
         protocol icmpv6
     }
     rule 30 {
         action accept
         description "Allow IPv6 https"
         destination {
             port https
         }
         protocol tcp
     }
     rule 40 {
         action drop
         description "Drop invalid state"
     }
 }

IPv6 テストサイトを活用して公開サーバをテストします。

テストの前に web サーバ(nginx)を IPv6 が利用できるように設定します。

/etc/nginx/nginx.conf
:
server {
    listen       443 ssl http2;
    listen  [::]:443 ssl http2;  こちらを追加します。
    server_name  www.akiboi.duckdns.org;
    :

続いて、DNS に公開 Web サーバのグローバル IPv6 アドレスを登録します。私はDuck DNSを利用していますのでこちに登録しました。 これで準備が整いましたので、テストをしたいと思います。今回はhttps://ready.chair6.net/でチェックします。

公開サーバの URL を入力してテストします。結果は以下の通りでした。無事、公開サーバも IPv6 通信が可能となりました。

公開サーバのIPv6通信のテスト!