2
5

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 1 year has passed since last update.

VyOSからtransix ipv4接続(固定ip)を使う

Last updated at Posted at 2020-06-04

とは

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からも接続を確認する。

2
5
1

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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?