SaaSes VPS 構築記(2)

とりあえず手始めに、IPSec GRE tunnelを張ることに。しかぁし、IPv6関連のドキュメントを探すと、IPv6関係の記載された日本語ドキュメントが見つからん。しょうがないので、ネットワーク周りの起動スクリプトを見てみると、FreeBSDでやれそうなことが全然できないじゃーん。

ってことで、/etc/sysconfig/network-scripts/ifup-tunnelを大幅リライト。こんな感じでとりあえず運用。
-----------------------------------------------------------------
--- ifup-tunnel.original 2010-05-04 21:57:18.000000000 +0900
+++ ifup-tunnel 2010-05-01 00:13:43.000000000 +0900
@@ -19,9 +19,6 @@
cd /etc/sysconfig/network-scripts
. ./network-functions

-[ -f /etc/sysconfig/network-scripts/network-functions-ipv6 ] || exit 1
-. /etc/sysconfig/network-scripts/network-functions-ipv6
-
CONFIG=$1
need_config "$CONFIG"
source_config
@@ -69,8 +66,22 @@
# contained in the peer's private network or identical to it's public address,
# it need not be specified.
/sbin/ip link set dev "$DEVICE" up
-/sbin/ip addr add "$MY_INNER_IPADDR" dev "$DEVICE" \
- ${PEER_INNER_IPADDR:+peer "$PEER_INNER_IPADDR"}
+/sbin/ip addr add "$MY_INNER_IPADDR" dev "$DEVICE"
+
+# Apply local IPv6 address, if given (numbered tunnel)
+if [ -n "$IPV6ADDR_LINKLOCAL" ]; then
+ /sbin/ip addr add "$IPV6ADDR_LINKLOCAL" dev "$DEVICE"
+fi
+if [ -n "$IPV6ADDR" ]; then
+ /sbin/ip addr add "$IPV6ADDR" dev "$DEVICE"
+fi
+if [ -n "$IPV6ADDR_SECONDARIES" ]; then
+ /sbin/ip addr add "$IPV6ADDR_SECONDARIES" dev "$DEVICE"
+fi

+# IPv6 default gateway
+if [ -n "$IPV6_GATEWAY" ]; then
+ /sbin/ip route add ::/0 "$IPV6_GATEWAY"
+fi
-----------------------------------------------------------------
これに、/etc/sysconfig/network-scripts/ifcfg-tunnel0 ってのを作って、
-----------------------------------------------------------------
DEVICE=tunnel0
ONBOOT=yes
TYPE=GRE
MTU=1430
PEER_OUTER_IPADDR=172.16.1.1
MY_OUTER_IPADDR=192.168.1.1
IPV6_GATEWAY="dev tunnel0"
IPV6ADDR="2001:db8:cafe:ffff::e/126"
IPV6ADDR_LINKLOCAL=fe80::216:36ff:fe00:0101/64
-----------------------------------------------------------------
こんな感じで設定を。これが正しいのかはわからないけど、やりたかったのは、
・IPv6 over IPv4でGRE tunnelを張る。
・GRE tunnelを張った後に、tunnel I/Fに対して、グローバルIPv6アドレスとリンクローカルIPv6アドレスをつける
・デフォルトゲートウェイをtunnel I/Fに対して任意に振る
の3点。IHANetでは、このやり方は常套手段なんだけど、なんか見ていてできそうになかったので、自分で好きなように直しちゃったというのが本音。正解誰か教えてほしいなぁ。
んで、このスクリプトを書き直している最中にわかったんだけど、IHANetで話題になっていた、FreeBSDとLinuxでGRE tunnelを張った時にping6 -I greX ff02::1 を実行したときに、Linuxで応答しないってもの当然だ、という結論に。GRE tunnelにlinklocal addressが付いてなきゃ、そら応答ないわなぁ、と。って事で、このスクリプトにて、Linuxでもping6で応答を返すことができるようになる、と。

あ、今差分を見てみると、/sbin/ip addr add "$MY_INNER_IPADDR" dev "$DEVICE" の行は使われてない…。まぁいいや。次は、L2VPNにチャレンジかな。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント