予想に反して、asahi-netのIPv6(フレッツ)が申し込みしてないはずだったのに勝手に有効化されてしまい、よく確認してみると「withフレッツ」契約だと強制的に有効にさせられるらしいので、まぁ前向きに、自宅サーバ(Linux CentOS6.9)をマジメにIPv6対応させることにした。
● ルータの設定
IPv6についてはパススルーだけ対応の古いルータ(AtermWG600HP)なので、Linux側でファイア・ウォールさせる方針にする。ルータは「IPv6ブリッジ」を有効にしておくこと。asahi-netのフレッツはIPv6はIPoE方式(PPPoEじゃない)なので、これだけでほぼ設定は終わる。
ひかり電話契約がある場合はDHCPv6-PD形式でHGWが受ける形式になり、ひかり電話契約がない場合は DHCPv6で prefix /64 がIAIDに直接割り振られる・・・感じらしいけど正直まだきちんとは理解できていない。
● LinuxのIPv6設定
「どーせIPv6なんか使わんやろ」と思っていた昔に設定したLinuxなので、案の定無効化されていた。
# vi /etc/sysctl.d/ipv6-disable.conf
#net.ipv6.conf.all.disable_ipv6 = 1コメントアウトして再度有効に。再起動後、ifconfig で IPv6 (Scope:Global)が/64で取れていることを確認。
#net.ipv6.conf.default.disable_ipv6 = 1
● Linuxのip6table設定
ファイアウォールの方は、
# vi /etc/sysconfig/ip6tables
# Firewall configuration written by system-config-firewall最初からある設定も参考にして、こんなとこか?(http,httpsを有効にする) 外へ見せてるサーバなので、DROPよりもREJECTのほうが好み。
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT
# /etc/init.d/ip6table start
# /etc/init.d/ip6table status
# chkconfig ip6talbes on
● HTTP/HTTPDの確認
TCP 80 を許可/不許可切り替えながら本当に動いているかを確認してみる。
[rarul@mana ~]$ curl http://fe80::c23f:****:****:****/... curlが古いのか結局わからんかった。なので代わりにtelnetで、
curl: (7) Failed to connect to fe80::c23f:****:****:****: Invalid argument
[rarul@mana ~]$ curl http://[fe80::c23f:****:****:****]/
curl: (3) [globbing] error: bad range specification after pos 9
[rarul@mana ~]$ curl -g 'http://[fe80::c23f:****:****:****]:80/'
curl: (7) Failed to connect to fe80::c23f:****:****:****: Invalid argument
[rarul@mana ~]$ telnet fe80::c23f:****:****:****%eth0 80反応あり/なしがわかったから、もう確認はtelnetだけでいいや・・・telnetの場合は「%eth0」が必要らしい。別Windowsマシンからも、「http://[fe80::c23f:****:****:****]/」で確認できたのでこれでよさそう。
Trying fe80::c23f:****:****:****%eth0...
Connected to fe80::c23f:****:****:****%eth0.
Escape character is '^]'.
^C
Connection closed by foreign host.
あと、Apacheのアクセスログのaccess_logに IPv6が残っていたよ、ヤッター
fe80::4845:****:****:**** - - [07/Feb/2018:17:22:35 +0900] "GET / HTTP/1.1" 200 2422 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
● DNS
www.rarul.com の AAAA レコードを登録して完了。DNSが浸透してきた頃にアクセスログ見て最終確認すればよいかと。