とは
2020/06/01から
フレッツ接続 ZOOT NATIVE IPv4固定IP- INTERLINK
https://www.interlink.or.jp/service/zootnative/koteiip.html
が開始されたので、これをVyOSから使う。
2022/03/12 追記:
ここの「v6Direct」も同じ方法で接続できた。
https://www.open-circuit.ne.jp/isp/ipv6-ipoe.html
このサービス自体は、PPPoE接続を通すことなく固定IPv4アドレスが使えるものである。もちろん外部からの接続を受け付けられるのでサーバーにも使える。
似たようなサービスとしては、DS-LiteやMAP-Eを使った物が多くのプロバイダーにて提供されているが、これらは外部からの接続を受け付ける事に制限がある(MAP-Eでは使えるポートに制限がある/DS-Liteでは完全に不可能)。
同様のサービスは他の一部プロバイダでも実施されている。
仕組み自体の説明はこちらへ。
transix IPv4接続(固定IP)
https://www.mfeed.ad.jp/transix/staticip/
DS-Liteとの違い
ググるとVyOSからDS-Liteに接続する方法は多数出てくる。基本的にはこれに以下の変更を加えたものである。
- VyOS側でNATを用意する。
- DS-Liteではプロバイダー側にNATがある
- トンネル接続に使うIPv6アドレスの後半を、プロバイダーが指定した「インターフェースID」と同じにする。
- そもそもIPv6アドレスの後半64bitのことを「インターフェイスID」という
VyOSの設定
設定ファイル中で【】で囲まれている項目は、プロバイダからのメール内に記載されている各項目に対応する。
この例ではIPv6ブリッジを構成していないので、このままでは他のPCからインターネットへのIPv6通信が通らない。 そこはググってほしい(´・ω・`)
インターフェイスの設定を行う
- LAN側: eth0
- WAN(インターネット)側: eth1
として例を示す。
先にIPv6ネットワークに接続されている他のPCで ip addr
などを使って、自分のIPv6アドレスを調べておく。そしてここからIPv6プレフィックスを切り出す。
例えば 2001:1234:5678:abcd:0123:1234:2345:3456/64
なら
2001:1234:5678:abcd
がプレフィックスで 64
がプレフィックス長だ。
そしてVyOSには例えば次のように設定する。
interfaces {
ethernet eth0 {
address 192.168.1.1/24
description LAN
dhcpv6-options {
parameters-only
}
hw-id (LAN側ポートのMACアドレス)
policy {
route transix
}
speed auto
}
ethernet eth1 {
address (自分のIPv6プレフィックス):【インターフェースID】/(プレフィックス長)
description WAN
dhcpv6-options {
parameters-only
}
hw-id (WAN側ポートのMACアドレス)
ipv6 {
address {
autoconf
}
}
}
}
policy {
route transix {
rule 10 {
protocol tcp
set {
tcp-mss 1412
}
tcp {
flags SYN
}
}
}
}
トンネルを作る
interfaces {
(tunnel以外は省略)
tunnel tun0 {
address 【グローバル固定IPv4アドレス】/32
encapsulation ipip6
local-ip (自分のIPv6プレフィックス):【インターフェースID】
remote-ip 【固定IPトンネル終端装置 IPv6アドレス】
}
}
ルーティング
protocols {
static {
interface-route 0.0.0.0/0 {
next-hop-interface tun0 {
}
}
}
}
NATを構成する
destination
の部分はポート開放(外部からの接続を受け付ける)例である。外に接続するだけなら source
の部分だけ書けばよい。
nat {
destination {
rule 10 {
description http
destination {
port 80,443
}
inbound-interface tun0
protocol tcp
translation {
address (webサーバーのIPv4アドレス)
}
}
}
source {
rule 20 {
outbound-interface tun0
source {
address 192.168.1.0/24
}
translation {
address masquerade
}
}
}
}
DHCPを構成する
VyOS自身がルーターとして振る舞うため、DHCPもここに用意するとよいだろう。
service {
dhcp-server {
shared-network-name LOCAL_NET {
subnet 192.168.1.0/24 {
default-router 192.168.1.1
dns-server 192.168.1.1
lease 86400
range 0 {
start 192.168.1.100
stop 192.168.1.249
}
}
}
}
dhcpv6-server {
disable
}
dns {
forwarding {
allow-from 0.0.0.0/0
cache-size 1000
listen-address 192.168.1.1
name-server 8.8.8.8
name-server 8.8.4.4
}
}
}
ファイヤーウォールを構成する
おそらくかなり手を抜いている。
zone-policyを用いている。
firewall {
all-ping enable
broadcast-ping disable
config-trap disable
ipv6-name accept_all_v6 {
default-action accept
rule 2 {
action drop
state {
invalid enable
}
}
}
ipv6-name public_to_local_v6 {
default-action drop
rule 1 {
action accept
state {
established enable
related enable
}
}
rule 2 {
action drop
state {
invalid enable
}
}
rule 3 {
action accept
protocol icmpv6
}
rule 4 {
action accept
protocol ipip
}
}
ipv6-receive-redirects disable
ipv6-src-route disable
ip-src-route disable
log-martians enable
name accept_all {
default-action accept
rule 2 {
action drop
state {
invalid enable
}
}
}
name public_to_local {
default-action drop
rule 1 {
action accept
state {
established enable
related enable
}
}
rule 2 {
action drop
state {
invalid enable
}
}
}
name public_to_private {
default-action drop
rule 1 {
action accept
state {
established enable
related enable
}
}
rule 2 {
action drop
state {
invalid enable
}
}
rule 10 {
action accept
description http (Webサーバーを置く場合の例)
destination {
port 80,443
}
protocol tcp
}
}
receive-redirects disable
send-redirects enable
source-validation disable
syn-cookies enable
twa-hazards-protection disable
}
zone-policyも書く。
zone-policy {
zone local {
default-action drop
from private {
firewall {
ipv6-name accept_all_v6
name accept_all
}
}
from public {
firewall {
ipv6-name public_to_local_v6
name public_to_local
}
}
local-zone
}
zone private {
default-action drop
from local {
firewall {
ipv6-name accept_all_v6
name accept_all
}
}
from public {
firewall {
ipv6-name public_to_local_v6
name public_to_private
}
}
interface eth0
}
zone public {
default-action drop
from local {
firewall {
ipv6-name accept_all_v6
name accept_all
}
}
from private {
firewall {
ipv6-name accept_all_v6
name accept_all
}
}
interface tun0
interface eth1
}
}
動作確認
まずはVyOS自身からIPv4インターネットに出て行けるか確認する。
適当なIPv4アドレスに向けて traceroute
を打って transix.jp
を通過していれば多分おk
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 ike-bbrt10.transix.jp (14.0.9.93) 4.654 ms 4.631 ms 4.458 ms
2 72.14.222.189 (72.14.222.189) 6.416 ms 6.405 ms 6.380 ms
3 * * *
4 dns.google (8.8.8.8) 6.090 ms
これができたら、他のPCからも接続を確認する。