VyOS の tunnel interface は、離れたネットワーク間に仮想リンクを作り、その上に static route、OSPF / OSPFv3、検証用経路を載せるための機能です。GRE や IP6GRE は、OpenVPN のような暗号化 VPN ではなく、経路設計に組み込むためのトンネルとして考えます。
vyos tunnel interface や vyos gre で調べる時に重要なのは、トンネルを作るコマンドだけではありません。外側の到達性、トンネル内アドレス、MTU / MSS、Firewall、動的ルーティングを分けて確認する必要があります。
この記事では、VyOS 1.5 系で読むことを前提に、GRE / IP6GRE を経路設計に組み込むための考え方、設定例、確認手順をまとめます。実際のアドレスは公開用の例に置き換えています。
書籍
ルーティング、トンネル、MTU / MSS、ネットワーク設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
この記事の結論
- GRE / IP6GRE は暗号化 VPN ではなく、経路を載せる仮想リンクである
- 外側アドレスとトンネル内アドレスを分けて設計する
- MTU / MSS は下位経路とカプセル化のオーバーヘッドを見て決める
- OSPF / OSPFv3 に組み込む場合は IPv4 と IPv6 を別々に確認する
- 疎通しない時は外側到達性、トンネル状態、経路、Firewall を順番に見る
tunnel interface の役割
トンネルは、離れたネットワーク間に仮想的なリンクを作る仕組みです。物理インターフェイスのように IP アドレスを持たせ、static route や OSPF / OSPFv3 の経路先として扱えます。
| 用途 | 考え方 | 注意点 |
|---|---|---|
| 拠点間経路 | 拠点間を仮想リンクとして扱う | 暗号化が必要なら別途保護する |
| 動的ルーティング | OSPF / OSPFv3 の隣接に使う | MTU 不一致や片方向経路に注意する |
| 検証経路 | 一時的な経路や overlay を作る | 本番経路と混ぜない |
| VPN 上の GRE | 保護された下位経路の上に経路制御用リンクを載せる | オーバーヘッドが増える |
外側と内側のアドレスを分ける
トンネルでは、トンネルを張るための外側アドレスと、トンネル上で使う内側アドレスを分けて考えます。外側が届かなければトンネルは上がらず、内側アドレスや OSPF の設定を見ても解決しません。
| 層 | 例 | 見ること |
|---|---|---|
| 外側 | source-address / remote | 相手まで到達できるか |
| トンネル本体 | tun1000 | encapsulation、MTU、状態 |
| 内側 IPv4 | 192.0.2.2/30 | static route や OSPF の next-hop |
| 内側 IPv6 | fd00:1000::2/64 | OSPFv3 や IPv6 経路 |
IP6GRE トンネルを設定する
IPv6 を下位経路として GRE を張る場合、ip6gre を使います。ここでは、トンネルの外側は IPv6、トンネル上で扱うアドレスは IPv4 / IPv6 の両方を持たせる例にしています。
configure
set interfaces tunnel tun1000 description 'site-to-site-routing-link'
set interfaces tunnel tun1000 encapsulation 'ip6gre'
set interfaces tunnel tun1000 source-address 'fd00::2'
set interfaces tunnel tun1000 remote 'fd00::1'
set interfaces tunnel tun1000 address '192.0.2.2/30'
set interfaces tunnel tun1000 address 'fd00:1000::2/64'
commit
saveMTU と MSS を調整する
トンネルではカプセル化によりヘッダ分のオーバーヘッドが増えます。そのため、物理インターフェイスと同じ MTU の感覚で扱うと、フラグメントや PMTUD の問題が出ることがあります。
configure
set interfaces tunnel tun1000 mtu '1376'
set interfaces tunnel tun1000 ip adjust-mss '1336'
set interfaces tunnel tun1000 ipv6 adjust-mss '1316'
commit
saveMTU と MSS は環境によって変わります。PPPoE、OpenVPN、GRE、IPv6 などを重ねる場合、どの層で何バイトのオーバーヘッドがあるかを意識して調整します。
OSPF / OSPFv3 に組み込む
tunnel interface は、単に疎通させるだけでなく、動的ルーティングの隣接や経路広報のために使えます。IPv4 の OSPF と IPv6 の OSPFv3 は別設定として扱います。
configure
set protocols ospf area 0 network '192.0.2.0/30'
set protocols ospfv3 interface tun1000 area '0'
commit
saveIPv4 の OSPF に入れただけでは IPv6 の経路は流れません。デュアルスタックのトンネルでは、IPv4 / IPv6 の隣接と経路を別々に確認します。
Firewall を確認する
GRE 系トンネルでは、外側の到達性と Firewall の扱いも確認します。OpenVPN や IPsec の上に GRE を重ねる場合でも、下位トンネルが安定していなければ GRE 側の切り分けは難しくなります。
- 外側アドレス同士で疎通できるか
- GRE / IP6GRE を通す経路や Firewall があるか
- 下位トンネルを使う場合、そのトンネルが安定しているか
- トンネル内アドレスへの input / forward が必要か
- OSPF / OSPFv3 の multicast や隣接が通るか
確認する
確認では、トンネル本体、外側の到達性、内側アドレス、経路、OSPF 隣接、MTU / MSS を分けて見ます。
show interfaces tunnel
show ip route
show ipv6 route
show ip ospf neighbor
show ipv6 ospfv3 neighbor
show configuration commands | match 'interfaces tunnel'よくあるつまずき
| 症状 | 見る場所 | 考え方 |
|---|---|---|
| トンネルが上がらない | 外側 source / remote の到達性 | 内側設定より先に外側を見る |
| ping は通るが経路が流れない | OSPF / OSPFv3 neighbor | 疎通と動的ルーティングを分ける |
| 大きな通信だけ止まる | MTU / MSS / PMTUD | カプセル化のオーバーヘッドを見る |
| IPv4 だけ流れる | OSPF と OSPFv3 | IPv4 / IPv6 の設定を分ける |
| 暗号化されていると思っていた | 下位 VPN の有無 | GRE 自体は暗号化 VPN ではない |
まとめ
VyOS の tunnel interface は、単なる接続補助ではなく、経路設計に組み込むための仮想リンクです。外側アドレス、トンネル内アドレス、MTU、MSS、OSPF / OSPFv3、Firewall を合わせて考えることで、拠点間経路を説明しやすくなります。
GRE 系トンネルは暗号化そのものを提供するものではありません。必要に応じて、OpenVPN や IPsec などの保護された経路と組み合わせ、トンネルの役割を明確に分けることが重要です。

