サーバをIPV6対応してみた

この記事は約20分で読めます。

こんにちは

自転車と関係ネタが続いてますね。(^_^;
いい加減IPV6を勉強しようかなと思ったので、まずはこのブログを餌食(笑)にして勉強してみようかなと思います。

今日は、このサーバをIPV6で接続できる様に対応してみたいと思います。
IPV6が不勉強でかつ、IPV6を使う環境がなかったので今まで避けて通ってました。(^_^;

自宅はやろうと思えば、IPV6環境の構築は可能だと思います。多分。
インターネット回線はIPOE接続なので、自宅のルーターより上の方は恐らくIPV6で動作してると思います。多分。。
気にしないでIPV4で動いてるのが割と凄いなと思ってたり。。(^_^;

サーバ側のIPV6対応ができたら、いづれ自宅もチャレンジしてみたいなとは思ってます。

IPV6とは?

IPV6ってなんだ?と思われる方も多いと思いますが、インターネットや自宅ネットワーク等で通信する時の通信方法で、少し前(だいぶん前?)までは、IPV4と言う物を使ってました。
「V」は「Version」で、バージョン4から6へ上がった感じですね。。バージョン5は?と思って調べてみたら、ストリーミング用途で実験的にやってたみたいですが、イマイチだったみたいで実用化されなかったっぽいです。

IPV4ですが、だいぶん前にニュースなどで報道されていたので聞いた事あるな?と思う人も多いかなと思います。内容はIPV4で割り当ててられるアドレスが枯渇して割当ができなくなると言う感じだったと思います。2011年のニュースだったと思います。今は、調べてませんが、恐らく割り当てられたIPアドレスを使いまわしてるんだろうなと思います。(^_^;

これを一気に解決できるのがIPV6なんですよね。
IPV4アドレスって見たこと有るかもしれませんが「192.168.0.1」みたいに0-255の数字4つで表現します。IPV4の場合は、約43億個(2の32乗)使えます。世界中で使ってスマホなんかでも使い始めると足りるわけもなく、いよいよ足りなくなった感じです。元々大学の構内で使い始めた物なので、そこまで考えてなかったんだろうと思います。

IPV6の場合は、2の128乗個の利用が可能で、単位があれなのですがIPV4の2の96乗倍の割当ができるそうです。足りなくなるとは思えないですね。

一気にIPV6に無理やり進めるのかと思ってましたが、特にサイトに関しては大手ぐらいしか普及してない気が。。します。私のサイトも当然(笑)IPV4です。
自宅でインターネットを契約してもサーバを借りてもIPV6はついてきますが、IPV4(グローバルIP)も普通に割り振られます。プライベートアドレスになるのかも?とか思ってましたが、そこまでの状況じゃなさそうですね。

感覚的には長い時間を掛けて徐々に移行していくのかなぁ。。と思えます。
それか共存?(^_^;

現在の環境を確認

設定にあたり、割り振られているIPV6アドレスすら知らないんですよね。
まずはそこからかな。

このサーバは、さくらインターネットのVPSを借りて運営しています。
現在は、IPV4のみで設定してあり、IPV6は良く分からないので追い追い考えよう!と無効化。。(笑)
そんな感じで全く知識なしです。

サーバはCentOS7.9を使ってます。EOLは2024/06/30なので、2024年にはいったらリプレイスを検討したいかなと思います。余談ですが、会社のサーバをCentOS8で構築したら、いきなりEOLが短縮されて、2021/12/31と言われて半泣きになりました。2台作ったばかり。。
2ヶ月後にCentOS Stream8にあげました。急に変更する辞めての欲しいです。楽にできたので良かったですけど。。

借りてるVPSサーバの情報を調べてみます。

IPV4に関してはこんな感じです。

サーバをIPV6対応してみた

IPV6もありました。

サーバをIPV6対応してみた

ネットワークIFはeth0のみ使ってました。

サーバをIPV6対応してみた

ネットワークをIPV6対応する

勘違いしていると泣けるので、サーバのバージョンを確認します。
記憶どおりのバージョンでした。

[root@sak-tk2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

IPV6が無効になってるのを一応確認

[root@sak-tk2 ~]# cat /etc/sysctl.conf | grep ipv6
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
[root@sak-tk2 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
#IPV6_DEFAULTDEV="eth0"
#IPV6_DEFAULTGW="fe80::1"
[root@sak-tk2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
IPADDR="160.16.211.103"
NETMASK="255.255.254.0"
GATEWAY="160.16.210.1"
ONBOOT="yes"
TYPE="Ethernet"
DNS1="160.16.211.103"
DNS2="210.188.224.10"
DNS3="210.188.224.11"
#DNS3="2001:e42::1"
#IPV6INIT="yes"
#IPV6_ROUTER="no"
#IPV6ADDR="2001:e42:102:1807:160:16:211:103/64"

“/etc/sysconfig/network”のIPV6を有効にします。
変更前

[root@sak-tk2 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
#IPV6_DEFAULTDEV="eth0"
#IPV6_DEFAULTGW="fe80::1"

変更後

[root@sak-tk2 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
IPV6_DEFAULTDEV="eth0"
IPV6_DEFAULTGW="fe80::1"

“/etc/sysctl.conf”のIPV6を有効にします。
変更前

[root@sak-tk2 ~]# cat /etc/sysctl.conf | grep ipv6
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

変更後

[root@sak-tk2 ~]# cat /etc/sysctl.conf | grep ipv6
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0

“/etc/sysconfig/network-scripts/ifcfg-eth0”にIPV6の設定を入れます。
変更前

[root@sak-tk2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
IPADDR="160.16.211.103"
NETMASK="255.255.254.0"
GATEWAY="160.16.210.1"
ONBOOT="yes"
TYPE="Ethernet"
DNS1="160.16.211.103"
DNS2="210.188.224.10"
DNS3="210.188.224.11"
#DNS3="2001:e42::1"
#IPV6INIT="yes"
#IPV6_ROUTER="no"
#IPV6ADDR="2001:e42:102:1807:160:16:211:103/64"

変更後

[root@sak-tk2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
IPADDR="160.16.211.103"
NETMASK="255.255.254.0"
GATEWAY="160.16.210.1"
ONBOOT="yes"
TYPE="Ethernet"
DNS1="160.16.211.103"
DNS2="210.188.224.10"
DNS3="210.188.224.11"
#
DNS4="2001:e42::1"
IPV6INIT="yes"
IPV6_ROUTER="no"
IPV6ADDR="2001:e42:102:1807:160:16:211:103/64"

ネットワークの再起動前に現状確認

[root@sak-tk2 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:02:08:e5 brd ff:ff:ff:ff:ff:ff
    inet 160.16.211.103/23 brd 160.16.211.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever

ネットワークを再起動

[root@sak-tk2 ~]# sysctl -p
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.eth2.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth1.accept_source_route = 0
net.ipv4.conf.eth2.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
[root@sak-tk2 ~]# systemctl restart network.service 

ネットワークの再起動後に現状確認
IPV6アドレスが設定されているのを確認

[root@sak-tk2 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:02:08:e5 brd ff:ff:ff:ff:ff:ff
    inet 160.16.211.103/23 brd 160.16.211.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 2001:e42:102:1807:160:16:211:103/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe02:8e5/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

IPV6でpingが通る事を確認。
大丈夫そうです。

[root@sak-tk2 ~]# ping6 www.google.co.jp
PING www.google.co.jp(nrt20s18-in-x03.1e100.net (2404:6800:4004:81c::2003)) 56 data bytes
64 bytes from nrt20s18-in-x03.1e100.net (2404:6800:4004:81c::2003): icmp_seq=1 ttl=118 time=0.943 ms
64 bytes from nrt20s18-in-x03.1e100.net (2404:6800:4004:81c::2003): icmp_seq=2 ttl=118 time=0.994 ms
64 bytes from nrt20s18-in-x03.1e100.net (2404:6800:4004:81c::2003): icmp_seq=3 ttl=118 time=1.00 ms

DNSサーバを設定

IPV6のアドレスを引けない事を確認

[root@sak-tk2 named]# nslookup road-bike.net
Server:         160.16.211.103
Address:        160.16.211.103#53

Name:   road-bike.net
Address: 160.16.211.103

DNSのゾーンファイルにAAAAレコードを追加

@               IN A    160.16.211.103
@               IN AAAA 2001:e42:102:1807:160:16:211:103
ns              IN A    160.16.211.103
ns1             IN A    160.16.211.103
cycle           IN A    160.16.211.103
cycle           IN AAAA 2001:e42:102:1807:160:16:211:103
secure          IN A    160.16.211.103
secure          IN AAAA 2001:e42:102:1807:160:16:211:103
quake           IN A    160.16.211.103
quake           IN AAAA 2001:e42:102:1807:160:16:211:103
;sns            IN A    219.94.235.154
mail            IN A    160.16.211.103

DNSサーバを再起動後に、AAAAレコードが参照できる事を確認

[root@sak-tk2 named]# nslookup road-bike.net
Server:         160.16.211.103
Address:        160.16.211.103#53

Name:   road-bike.net
Address: 160.16.211.103
Name:   road-bike.net
Address: 2001:e42:102:1807:160:16:211:103

Webサーバ(Apache)をIPV6で動く様にします。
httpd.confのListenをIPV6も追加

Listen 160.16.211.103:80
Listen [2001:e42:102:1807:160:16:211:103]:80

VirtualHostの設定はIPアドレスを書いてなかったので、そのまま行けそう。

<VirtualHost *:443>
    DocumentRoot /home/ope/www/road-bike.net
    ServerName road-bike.net
    ErrorLog logs/road-bike.net-error_log

webサーバを再起動して完了。

[root@sak-tk2 ~]# apachectl configtest
Syntax OK
[root@sak-tk2 ~]# systemctl restart httpd

どうやって確認するの?

困った。。手元の環境はIPV4しか使えない。。
困り貼ってアクセスログを見たら。。IPV4,IPV6のアクセス元が記録されてました。
OKってことで。。(^_^;

66.249.79.?? - - [03/Feb/2023:18:03:57 +0900] "GET /archives/9113 HTTP/1.1" 200 36130 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.101 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
157.55.39.?? - - [03/Feb/2023:18:04:00 +0900] "GET /archives/33745 HTTP/1.1" 200 39248 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/103.0.5060.134 Safari/537.36"
2400:2412:1:8700:647b:60f2:68a7:???? - - [03/Feb/2023:18:04:03 +0900] "GET /wp-content/uploads/2022/04/03-640x244.jpg HTTP/1.1" 200 7601 "https://road-bike.net/archives/35166?amp=1" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1"
2400:2412:1:8700:647b:60f2:68a7:???? - - [03/Feb/2023:18:04:03 +0900] "GET /wp-content/uploads/2022/04/02.jpg HTTP/1.1" 200 11532 "https://road-bike.net/archives/35166?amp=1" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1"
2400:2412:1:8700:647b:60f2:68a7:???? - - [03/Feb/2023:18:04:04 +0900] "GET /wp-content/uploads/2022/04/04-640x322.jpg HTTP/1.1" 200 8605 "https://road-bike.net/archives/35166?amp=1" "Mozilla/5.0 (

ふと思いついてスマホのWiFiをOFFにしてモバイル回線からアクセスしてみたらIPV6アドレスからのアクセスだったので、OKですね。

2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:55 +0900] "GET / HTTP/1.1" 200 3239 "https://www.google.com/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /style.css HTTP/1.1" 200 184 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /parts/daycount/daycount.cgi?gif HTTP/1.1" 200 440 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /graph/banner.gif HTTP/1.1" 200 2571 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /parts/itacount/itacount.cgi HTTP/1.1" 200 405 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /parts/daycount/daycount.cgi?today HTTP/1.1" 200 175 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:56 +0900] "GET /parts/daycount/daycount.cgi?yes HTTP/1.1" 200 172 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"
2400:2200:85a:9884:fe95:5dc0:8dc0:c4 - - [03/Feb/2023:18:12:57 +0900] "GET /favicon.ico HTTP/1.1" 404 483 "https://kingyo.info/" "Mozilla/5.0 (Linux; Android 13; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36"

って事で、取り敢えず完了!

次は自宅かな。。

コメント