6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IPv6とlinuxでネットを快適にしてみた

Last updated at Posted at 2018-12-18

この記事は琉大情報工学科(知能情報コース) Advent Calendar 2018の18日目の記事です。

はじめに

事の発端は5月の中旬...
ISP(So-net)のIPv6接続先が変わったことにより、今まで受けていたIPv6の恩恵を受けることが出来なくなりました。1

IPv6アドレスは降ってきてるものの接続が出来ないので、IPv4でネットにアクセスしている模様でした。
そのため、回線速度がひどい時に数百Kbpsまで落ち込むことがありました。
光電話を使っていない自分が再びIPv6の恩恵を受けるには月額400円ほど払って機器をレンタルをしなければいけないようでした。

調べてみるとそれまで使っていたDual-Stack Lite方式(DS-Lite、RFC6333)をlinuxのトンネル機能を使って疑似的に再現している人がいたので試してみました。
さくらのVPS で IPv4 over IPv6ルータの構築

必要なもの

  • IPv4とIPv6のグローバルアドレスを持ったlinuxサーバ
  • IPv6アドレスが降ってくる回線
  • Yamaha製ルータ

linuxサーバのOSは参考スライドではCentOSを使っていましたが、ubuntu(16.04 LTS)でも出来たので、お好みのモノでいいかなと思います。
(恐らくiptablesが使えるディストリビューションなら大丈夫だと思います)
ルータは参考スライドではYamaha製のRTX1200を使っていましたが、自分は自宅で使っているYamaha製のRTX810を使用しました。
(cisco製ルータとlinuxをルータにしている場合は試してないので出来るかどうかはわかりません。)

実際に設定

linuxサーバにトンネルを設定

まず最初にmodprobe ip6_tunnelでIPv6においてのトンネル機能を有効にする。

以下のコマンドを実行してトンネルを設定。

ip -6 tunnel add tun0 mode ip4ip6 remote [ルータのIPv6アドレス] local [サーバのIPv6アドレス]

コマンド中の[ルータのIPv6アドレス]と[サーバのIPv6アドレス]は実際の値に置き換えてください。

以下のコマンドを実行して設定したトンネルを有効にする。

ip link set tun0 up
ip addr add 192.0.0.1/30 dev tun0

以下のコマンドを実行して、フォワーディングに必要なカーネルパラメータを変更。

sysctl -w net.ipv4.conf.all.forwarding=1
sysctl -w net.ipv4.conf.ens3.rp_filter=0
sysctl -w net.ipv4.conf.tun0.rp_filter=0
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.default.forwarding=1
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.nf_conntrack_max=65635

ens3は実際のNICのデバイス名に変えてください。

以下のコマンドを実行してiptablesを設定。

iptables -t nat -F
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i tan0 -j ACCEPT

以下のコマンドを実行して、ルーティングの設定をする。

route add -net 10.0.0.0/8 dev tun0
route add -net 192.168.0.0/16 dev tun0
route add -net 172.16.0.0/12 dev tun0

ルータの設定

Yamahaルータにtelnetやsshでアクセスして、administratorコマンドで管理者モードになる。
IPv6の設定をした後、tunnel selectコマンドで設定したいトンネルを選択し、以下のコマンドを実行する。

tunnel encapsulation ipip
 tunnel endpoint address [linuxサーバのIPv6アドレス]
 ip tunnel address 192.0.0.2
 ip tunnel remote address 192.0.0.1
 ip tunnel tcp mss limit auto

ip tunnel address 192.0.0.2を実行するとlinuxサーバーから自宅内にアクセスすることが出来る。

ip route default gateway [設定をしたトンネル]を実行して、デフォルトゲートウェイを設定をしたトンネルにする。

変更の確認

tracebackしてみたり、IPアドレスが確認出来るサイトにアクセスしてIPv4アドレスがlinuxサーバのIPv4アドレスに変わっていること確認する。

設定してみて

数百Kbpsしか出ていなかった時間帯に安定して2〜3Mbps程度の速度が出るようになりました。

機器レンタル代に月額400円払うなら、ほぼ同じ額のVPSにお金を使った方がいいのではと個人的には思いました。(色々できますし)
ubuntu 18.04LTSで上手く出来なかったので、時間を見つけて挑戦してみようかなと思っています。
予期しなかったメリットとデメリットが見つかったので、書いておこうと思います。

  • 予期しなかったメリット
    • radikoの位置判定が東京になった。(文化放送の声優ラジオ好きなので、文化放送が聞ける様になるだけで感無量)
  • 予期しなかったデメリット
    • 一部サイトに弾かれる(ビッ○カメラやarch○inuxなど)

最後に

明日(というか今日)の担当は@akio_rさんです!!

AWSのEC2でも同じ環境を構築しようと挑戦しているのですが、上手くいかないので誰か助けて...(安く済ませたい...)

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?