構成はこんな感じ。太字のところが今回のブログの対象。
外部: VPS( <-- GRE Tunnel --> VyOS <-- Private Network --> Server :内部
|
スペック等:
- VPS:
Cloudn : vQプラン CentOS release 6.7 (Linux rice 2.6.32-431.el6.x86_64) - VyOS: Version: VyOS 1.1.5
Configuration / 手順
せっかちな人向けにConfig/手順を晒す。VPS:
- ip_greモジュールを有効に:
- ネットワークConfigを作成: /etc/sysconfig/network-scripts/ifcfg-tun0 : #Interfaceの設定
- Interface をUP
# modprobe ip_gre
DEVICE=tun0
BOOTPROTO=none
ONBOOT=yes
TYPE=GRE
PEER_OUTER_IPADDR=203.0.113.16 #相手側のGlobalIP
PEER_INNER_IPADDR=192.168.0.250 #相手側のPrivateIP
MY_INNER_IPADDR=192.168.0.251 #自分側のPrivateIP
MTU=1400
/etc/sysconfig/network-scripts/route-tun0: #ルーティングの設定 (必要な環境のみ)
192.168.0.0/16 via 192.168.0.251
# ifup tun0
VyOS:
- 下記Configを投入:
- 設定を有効に(Commit):
interface {
tunnel tun0 {
address 192.168.0.250/24
encapsulation gre
local-ip 203.0.113.16
mtu 1400
remote-ip 198.51.100.8
}
}
# commit
解説:
特にコツなどはなく、上記設定がそのもの。実際私が調べてから接続まで試行錯誤もそれほどなく、すんなりと接続ができています。注意点はルーティングとMTU。
上記構成ではルーティグは特に不要ですが、Private Network側に複数セグメントある場合は、VPS側、VyOS側、両方に書かないと適切に通信ができません。
MTUも"ping -s <size> destination" 等で適切に計測して設定を行います。
これもVPS側、Server側と両方から計測をしないとMTUブラックホール問題にぶち当たります。
接続試験時にはMTUを上回るパケットサイズでの通信をおこなう必要がありそうです。
尚、セキュリティに関しては一切考慮していません。
一般的に使う場合はIPSec等で経路の保護が必要です。
参考:
How to configure a GRE Tunnel in CentOSGRE over IPSec Tunnel Between Cisco and VyOS