それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ipv6NAT転送をして、NTTフレッツ倶楽部にログインできたらいいな。

ipv6のNAT転送で、NTTフレッツ倶楽部にログインできたらいいな。

LAN内部にグローバルのv6 アドレスを割り当てたくない。

IPv6グローバルを割り当てるとフォールバックでイラッとする。

WindowsにULAを割当て、ルーターからNATしてv6通信をすることにした。

フォールバックさせたくない、でもフレッツ網内と通信はしたい(フレッツClubログイン回線認証はしたい)というレアケースに対応した。

windows --- ルーター

windowsルーターの間は fd03:ac7f:3852:67bb::/64 でネットワークしている。

windows は、 fd03:ac7f:3852:67bb::3 ルーターは、 fd03:ac7f:3852:67bb::1

IPv6をそれぞれに、割り当てて、接続することにする。

window にIPアドレスを割り当てる。

netsh interface ipv6 add address eth01 fd03:ac7f:3852:67bb::3

Windows側から、ルーターをデフォルトGWにする。

netsh interface ipv6 add route  ::/0  eth01 fd03:ac7f:3852:67bb::1

ルーター内部動作

ルーターでは、WAN(eth1) / LAN ( eth0 )を定義している

ルーターに v6 アドレスを割り当てる

ip addr add  fd03:ac7f:3852:67bb::1 dev eth0

ルーター側で、LAN→WANのv6 をNATする。

LAN_IF=eth0
WAN_IF=eth1

ip6tables -A FORWARD -i $LAN_IF -o $WAN_IF -j ACCEPT
ip6tables -A FORWARD -i $WAN_IF -o $LAN_IF  -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED
ip6tables -t nat -A POSTROUTING -o $WAN_IF -d ::/0 -j MASQUERADE

IPv6のNATは最近の ip6tables でサポートされている。 「IPv6にはNATがない」なんて昔話なんですね。

ルーター側で、フレッツへの経路を追加する。

たとえば、フレッツ倶楽部の経路を作成し、Windowsからフレッツログインができるようにする。

ルーターの経路を作る。

ゲートウェイのアドレスは fe80 のやつでいい。

WAN_IF=eth1
GW=$([[ $(ip neigh show dev $WAN_IF ) =~ (fe80[0-9a-f:]+) ]] ; echo ${BASH_REMATCH})
ip route add default via $GW dev eth1 metric 1024 pref medium

v6ではゲートウェイをneigh で示されたfe08アドレス宛に投げつけておけばいいので便利だ。

WindowsがNATでv6グローバルと通信できる

NAT通信できるので、Windowsがグローバルv6 アドレスをもたなくても、NATでv6グローバルと通信ができる。

メリット

  • 冒頭にも書いたが、NATすることで、V6のGUAを割当しなくていい。
  • グローバルなv6アドレスがなくULAだけだと、フレッツ閉域網フォールバックが発生しなくなる。
  • v6の外部との通信を、ルーターの経路表でも制御できるようになる。
  • v6のあれこれ、特に近隣探索を覚えなくていい。

v6アドレスでNATができると、「フレッツ固有」のグローバルIPに縛られずに済む。 VPN経由で通信しても接続先の拠点のグローバルなv6アドレスで通信ができるようになる。 たとえば、フレッツ回線認証のようなv6アドレス認証は、接続先のv6アドレスで認証される。

そのため、IPアドレス範囲でのファイアウォールが記述しやすくなる。

NTT のフォールバック問題

https://www.geekpage.jp/blog/?id=2012/3/28/1

NGNのv6フレッツは、グローバルなアドレスをRA・DHCPv6してくるので、WindowsiOSはv6通信を試みる。 v6 接続が失敗してはじめて4v接続が開始される。つまり、初回接続が極めて遅い問題がある。

ちょっと面倒な問題なので、v6をストップして運用するかIPoEを申し込むのが手っ取り早い解決策である。

v6網内通信をしたい

v6をオフにして運用していたとしても、v6網内折返しは使いたい。

あれこれ考えてみて、NATゲートウェイにすることにした。

v6でNATなどと思うんだけど、壊れたv6へ出ていくことを考えればGUAを割り振って無ければいいんじゃないかと。

フレッツclub 西日本と通信するには

西日本の場合、つぎのアドレスと通信できれば回線認証が通る。

2001:a7ff:ff63:1::a
2001:a7ff:ff47:101::1

次の経路を、以下のようにNATルーターの経路表へ追記しておくと、どこからでもNTT西日本フレッツ・クラブへログインができる。

WAN_IF=eth1
GW=$([[ $(ip neigh show dev $WAN_IF ) =~ (fe80[0-9a-f:]+) ]] ; echo ${BASH_REMATCH})
##
ip -6 route add from ::/0 to 2001:a7ff:ff63:1::a via $GW dev eth1 
ip -6 route add from ::/0 to 2001:a7ff:ff47:101::1 via $GW dev eth1 

ULAでNATする例として、網内折返しのサンプルを使いづらいのでフレッツの回線認証を例とした。NATができるといういいサンプルですね。

2021-08-17

修正