mazeltov7のweb断片

備忘録的なテキトーなことを書きます。(技術記事はQiitaに移行しました http://qiita.com/mazeltov7 )

IPv6に対応する(さくらVPS-CentOS6, お名前.com)

環境

  • OS:CentOS6.8(さくらVPS
  • ドメイン:お名前.com すでにIPv4で動いてるのを対応させる。

対応

事前チェック

自分のサイトがIPv6に対応してるかチェックできるサイト。
Is your site IPv6 ready?
- DNS (IPv6 AAAA Record)
- IPv6 Connectivity
でFAILしてるのを確認。

最近立ち上げたさくらのVPSだとすでにIPv6のある程度の対応されているみたい。

$ ifconfig -a
# で、eth0のところのinet6 addrがScope:LinkとGlobalもあれば一応対応されている

IPv6のアドレスを一応pingで確認

$ ping6 2001:XX:XX:XX:XX:XX:XX:XX 
# 対応されてる場合はこれで返ってくる

対応されている場合でも、

wget -6 hogehoge.com 
# -6はipv6での接続 (-6,  --inet6-only        connect only to IPv6 addresses.)

たぶんこれでconnection refuseされる。

IPv6 AAAA レコード対応

お名前.comでログイン後、「ドメイン設定」→「ネームサーバーの設定」→「DNS関連機能の設定」→対象ドメインを選択して「次へ進む」→「DNSレコード設定を利用する」
ここでAAAA Typeの、ValueにはIPv6のアドレスを入れて追加して保存する。
(サイトわかりにく(ry…) で、対応されたら、上のサイト(ready.chair6.net)でチェックする。PASSと出るはず。

IPv6 Connectivity対応

実は上記の対応だけでこれもチェックPASSする場合もある気がする。
わたしはここに習って設定反映したら、逆に通らなくなったがw (二重設定してる部分が原因だったorz)
IPv6アドレスの設定方法 – さくらのサポート情報

結局書いたのは、

$ vim /etc/sysconfig/network

NETWORKING_IPV6="yes"
IPV6_AUTOCONF=no
を追加

$ vim /etc/sysconfig/network-scripts/ifcfg-eth0

元々以下が書かれていたので一点だけちょっと修正したのみ。
DEVICE="eth0"
BOOTPROTO="static"
DNS1="XXX.XXX.XXX.XX"
DNS2="XXX.XXX.XXX.XX"
DNS3="2001.XXX.XXX.XX"
GATEWAY="XXX.XX.XX.X"
HWADDR="XXX.XXX.XXX.XX"
IPADDR="XXX.XXX.XXX.XX"
IPV6ADDR="XXX.XXX.XXX.XX/64" # ここに/64を追加
IPV6INIT="yes"
IPV6_AUTOCONF="no"
IPV6_DEFAULTGW="fe80::1%eth0"
MTU="OOO"
NETMASK="XXX.XXX.XXX.XX"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="OOOOOOOOOO"

上記対応したら、

$ service network restart

で確認

$ ifconfig -a # inet6 addrがScope:Globalも出てること確認
$ netstat -rnA inet6 # ::/0で、fe80::1になってること確認
$ ping6 2001:XX:XX:XX:XX:XX:XX:XX(ipv6のアドレス) # 返ってくること確認

あとは、サイトで両方PASSしてることを確認。 あと、

$ wget -6 hogehoge.com
# これで結果返ってくることを確認

開通はこれでOK。

ip6tablesの設定

iptablesipv4の方なので、別途ip6tablesを対応しないといけない。

$ chkconfig ip6tables --list # 3:onになってたら自動起動設定されてる
$ vim /etc/sysconfig/ip6tables
# httpとhttpsだけあけとく
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

$ /etc/init.d/ip6tables restart

OK

参考:
- https://serversmanvps.xn–ockc3f5a.com/2016/01/04/%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AEipv6%E5%8C%96%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F
(↑リンク飛ばねぇ…URLコピペしたら見れる…)
- 俺の知っているコマンドがIPv6で使えないわけがない|サイバーエージェント 公式エンジニアブログ
- 4ステップでWebサーバをIPv6に対応させる方法(2/3) − @IT
- CentOS に ip6tables の設定を行う(IPv6) | Webセキュリティの小部屋