SlideShare a Scribd company logo
1 of 27
Download to read offline
OpenWrt によるサイト間
IPsec接続
2016/1/6 修正
梅野 崇
Copyright2016 Takashi Umeno
OpenWrtのサイト間接続のドキュメント
が少ない
• 証明書を利⽤したり、OpenWrtと他のIPsecルータと対向させ
るドキュメントは⾒あたる。
• OpenWrt同⼠で単純なIPsecでサイト間接続のドキュメントが
⾒当たらない
• →まとめてみた。
Copyright2016 Takashi Umeno
動作環境
• OpenWrt 15.05, x86-generic版
• MacBook Pro (13-inch, Late 2011)
• USB Ethernet NIC (LUA3-U2-ATX)
• MacOSX 10.11.1 上の VirtualBox 5.0.10 r104061で確認
Copyright2016 Takashi Umeno
OpenWrtのイメージ⼊⼿⽅法
• https://downloads.openwrt.org/chaos_calmer/15.05/x86/ge
neric/ から下記をダウンロードする
• https://downloads.openwrt.org/chaos_calmer/15.05/x86/ge
neric/openwrt-15.05-x86-generic-combined-ext4.img.gz
Copyright2016 Takashi Umeno
VirtualBoxで扱う形式に変換
% VBoxManage convertfromraw --format VDI openwrt-15.05-x86-generic-combined-ext4.img
openwrt-BB-15.05-x86.1.vdi
% VBoxManage convertfromraw --format VDI openwrt-15.05-x86-generic-combined-ext4.img
openwrt-BB-15.05-x86.2.vdi
同⼀のVirtualBox 上で使⽤するのでVBoxManageは2回実⾏して、openwrt-BB-15.05-x86.1.vdiと
openwrt-BB-15.05-x86.2.vdi を作成する事。
% cp -p openwrt-BB-15.05-x86.1.vdi openwrt-BB-15.05-x86.2.vdi
としても openwrt-BB-15.05-x86.1.vdi を使⽤している環境で openwrt-BB-15.05-x86.2.vdiを使⽤す
ることはできない。
Copyright2016 Takashi Umeno
VirtualBoxでVM作成
• VM1
• 名前: OpenWrt 15.05 R1
• オペレーティングシステム: Linux 2.6 /3.x /4.x (32bit)
• メインメモリー: 256MB
• ストレージ: openwrt-BB-15.05-x86.1.vdi
• ネットワーク
• アダプター1: (ブリッジアダプター, 'en1: Wi-Fi (AirPort)')
• アダプター2: (ブリッジアダプター, 'en0: Ethernet')
• VM2
• 名前: OpenWrt 15.05 R2
• オペレーティングシステム: Linux 2.6 /3.x /4.x (32bit)
• メインメモリー: 256MB
• ストレージ: openwrt-BB-15.05-x86.2.vdi
• ネットワーク
• アダプター1: (ブリッジアダプター, 'en1: Wi-Fi (AirPort)')
• アダプター2: (ブリッジアダプター, 'en4: AX88772')
Copyright2016 Takashi Umeno
ネットワーク環境
• MacBookProの本体内蔵有線LANとUSB接続の有線LAN間で
VPN接続するためVirtualBox的には下記の構成とする。
Copyright2016 Takashi Umeno
ネットワーク構成図
• OpenWrtの視点で⾒ると下記のネットワーク構成とする。
Copyright2016 Takashi Umeno
OpenWrt 15.05 R1の設定
• OpenWrt 14.07と異なり OpenWrt 15.05ではデフォルトでは
wan側にeth1を割り当てている。
• /etc/config/network の設定変更を⾏った。
• wan側にeth0 (192.168.2.11/24)を割り当てる
• lan側にeth1 (192.168.101.1/24)を割り当てる
• デフォルトルートに192.168.2.1を指定する
Copyright2016 Takashi Umeno
OpenWrt 15.05 R1 設定変更後の
/etc/config/network
config interface 'loopbackʼ
option ifname 'loʼ
option proto 'staticʼ
option ipaddr '127.0.0.1ʼ
option netmask '255.0.0.0'
config interface 'lanʼ
option ifname 'eth1ʼ
option proto 'staticʼ
option ipaddr '192.168.101.1ʼ
option netmask '255.255.255.0ʼ
config interface 'wanʼ
option ifname 'eth0ʼ
option proto 'staticʼ
option ipaddr '192.168.2.11ʼ
option netmask '255.255.255.0ʼ
config route
option interface 'wanʼ
option target '0.0.0.0/0ʼ
option gateway '192.168.2.1'
Copyright2016 Takashi Umeno
OpenWrt 15.05 R1 設定変更後の
/etc/config/firewall
• パケットを破棄しないように
した。
config defaults
option syn_flood 1
option input ACCEPT
option output ACCEPT
option forward ACCEPT # Uncomment this line to disable
ipv6 rules
option disable_ipv6 1
config zone
option name lan
list network 'lanʼ
option input ACCEPT
option output ACCEPT
option forward ACCEPT
config zone
option name wan
list network 'wanʼ
option input ACCEPT
option output ACCEPT
option forward ACCEPT
# option masq 1
# option mtu_fix 1
config forwarding
option src lan
option dest wan
# include a file with users custom iptables rules config
include
option path /etc/firewall.user
# allow IPsec/ESP and ISAKMP passthrough
config rule
option src wan
option dest lan
option proto esp
option target ACCEPT
config rule option src wan option dest lan option dest_port
500 option proto udp option target ACCEPT
Copyright2016 Takashi Umeno
Web設定
ここまで設定した状態でOpenWrt 15.05 R1を再起動すると
wan側(eth0)の192.168.2.1からOpenWrtのWebインタフェース
に接続可能になる。
Webインタフェースから
• DNSサーバの設定として192.168.2.1, 8.8.8.8を指定した。
• Webから管理者パスワードの設定を⾏った。
Copyright2016 Takashi Umeno
WebインタフェースからDNSサーバ設定
Copyright2016 Takashi Umeno
OpenWrtの最新化
• コンソールから下記コマンドを実⾏して
OpenWrtを最新化する
# opkg update
# opkg list-upgradable
• list-upgradable で表⽰された luci各種upgradeした。
Copyright2016 Takashi Umeno
OpenWrt 15.05 R2の設定
• OpenWrt 15.05 R1と同様の設定を⾏う
• /etc/config/networkの設定は異なる。
Copyright2016 Takashi Umeno
OpenWrt 15.05 R2 設定変更後の
/etc/config/network
config interface 'loopbackʼ
option ifname 'loʼ
option proto 'staticʼ
option ipaddr '127.0.0.1ʼ
option netmask '255.0.0.0'
config interface 'lanʼ
option ifname 'eth1ʼ
option proto 'staticʼ
option ipaddr '192.168.102.1ʼ
option netmask '255.255.255.0ʼ
config interface 'wanʼ
option ifname 'eth0ʼ
option proto 'staticʼ
option ipaddr '192.168.2.12ʼ
option netmask '255.255.255.0ʼ
config route
option interface 'wanʼ
option target '0.0.0.0/0ʼ
option gateway '192.168.2.1'
Copyright2016 Takashi Umeno
IPsec トンネル設定
• OpenWrt 15.05 R1(192.168.2.11) と
OpenWrt 15.05 R2(192.168.2.12)の間で
192.168.101.0/24 と 192.168.102.0/24 を
IPsecトンネルで接続する。
Copyright2016 Takashi Umeno
strongswan-fullをインストール
• opkg install strongswan-full を実⾏
• /etc/config/ipsec の設定変更を⾏った。
• R1 (192.168.101.0/24)とR2(192.168.102.0/24)の間でトンネルを掘る
• R1でトンネルの送信先のIPアドレスは192.168.2.12 (R2のWANのIPア
ドレス)
• R2のトンネルの送信先のIPアドレスは192.168.2.11 (R1のWANのIPア
ドレス)
• 事前共有鍵は”yourpasswordhere”
• /etc/init.d/ipsec のスクリプト変更した。
Copyright2016 Takashi Umeno
/etc/init.d/ipsec 修正
[IPsec Basics]https://wiki.openwrt.org/doc/howto/vpn.ipsec.basics
から
#/etc/init.d/ipsec
をコピペして実⾏すると下記の表⽰を出してエラーになる。
# /etc/init.d/ipsec start
kmod-crypto-aes missing echo install with "opkg install kmod-crypto-aes --nodeps"
# opkg install kmod-crypto-aes --nodeps
を実⾏してもkmod-crypt-aes がインストールされない。
Copyright2016 Takashi Umeno
/etc/init.d/ipsec 修正
• [Changeset 46483]https://dev.openwrt.org/changeset/46483
によるとaesはモジュールではなく、kernel内部に統合されたので、
/etc/init.d/ipsec は下記修正することで動作するようになった。
※要はaesのモジュールのインストール有無を調べないようにした。
--- ipsec.old2015-12-0622:44:58.777630000+0900
+++ ipsec 2015-12-06 22:43:32.149651000 +0900
@@ -194,7 +194,7@@
exit
fi
- for f in aes authenc cbc hmac md5 sha1; do
+ for f in authenc cbc hmac md5sha1;do
if [ `opkg list kmod-crypto-$f | wc -l` -eq 0 ]; then
echo kmod-crypto-$f missing
echo installwith "opkg installkmod-crypto-$f --nodeps"
Copyright2016 Takashi Umeno
/etc/config/ipsec の例に誤記載
• [Strongswan IPsec Configuration]https://wiki.openwrt.org/doc/uci/ipsec
の
Example 1 taken from the IPSec site to site howto. には、
config 'remote' 'acmeʼ
option 'enabled' '1ʼ
option 'gateway' '7.7.7.7ʼ
option 'authentication_method' 'pskʼ
option 'pre_shared_key' 'yourpasswordhereʼ
list 'p1_proposal' 'pre_g2_aes_sha1ʼ
list 'sainfo' 'acme_dmzʼ
list 'sainfo' 'acme_lanʼ
と記載されている。
Copyright2016 Takashi Umeno
/etc/config/ipsec の例に誤記載
list 'sainfo' 'acme_dmz'
list ʼsainfo' 'acme_lanʼ
の記載は誤り
list 'tunnel' 'acme_dmz'
list 'tunnel' 'acme_lan'
の様に'sainfo'ではなく'tunnel'を記載すること。
Copyright2016 Takashi Umeno
OpenWrt 15.05 R1 設 定 変 更 後 の
/etc/config/ipsec
config 'ipsecʼ
option 'zone' 'vpnʼ
config 'remote' 'r2ʼ
option 'enabled' '1ʼ
option 'gateway' '192.168.2.12ʼ
option 'authentication_method' 'pskʼ
option 'pre_shared_key' 'yourpasswordhere' list
'p1_proposal' 'pre_g2_aes_sha1' list 'tunnel' 'r2_lanʼ
config 'p1_proposal' 'pre_g2_aes_sha1ʼ
option 'encryption_algorithm' 'aes128ʼ
option 'hash_algorithm' 'sha1ʼ
option 'dh_group' 'modp1024'
config 'tunnel' 'r2_lanʼ
option 'local_subnet' '192.168.101.0/24ʼ
option 'remote_subnet' '192.168.102.0/24ʼ
option 'p2_proposal' 'g2_aes_sha1ʼ
config 'p2_proposal' 'g2_aes_sha1ʼ
option 'pfs_group' 'modp1024ʼ
option 'encryption_algorithm' 'aes 128ʼ
option 'authentication_algorithm' 'sha1'
Copyright2016 Takashi Umeno
OpenWrt 15.05 R2 設 定 変 更 後 の
/etc/config/ipsec
config 'ipsecʼ
option 'zone' 'vpnʼ
config 'remote' 'r1ʼ
option 'enabled' '1ʼ
option 'gateway' '192.168.2.11ʼ
option 'authentication_method' 'pskʼ
option 'pre_shared_key' 'yourpasswordhere' list
'p1_proposal' 'pre_g2_aes_sha1' list 'tunnel' 'r1_lanʼ
config 'p1_proposal' 'pre_g2_aes_sha1ʼ
option 'encryption_algorithm' 'aes128ʼ
option 'hash_algorithm' 'sha1ʼ
option 'dh_group' 'modp1024'
config 'tunnel' 'r1_lanʼ
option 'local_subnet' '192.168.102.0/24ʼ
option 'remote_subnet' '192.168.101.0/24ʼ
option 'p2_proposal' 'g2_aes_sha1ʼ
config 'p2_proposal' 'g2_aes_sha1ʼ
option 'pfs_group' 'modp1024ʼ
option 'encryption_algorithm' 'aes 128ʼ
option 'authentication_algorithm' 'sha1'
Copyright2016 Takashi Umeno
IPsecの状態確認
• OpenWrt 15.05 R1 や OpenWrt 15.05 R2 で ipsec status や ipsec statusall を実⾏する事で
動作確認できる。
192.168.101.0/24 と 192.168.102.0/24 間で正常にIPsecのトンネルが作成されている状態で
OpenWrt 15.05 R1 で ipsec status の実⾏結果を下記に⽰す。
root@OpenWrt:~# ipsec status
Security Associations (1 up, 0 connecting):
r2-r2_lan[21]:ESTABLISHED 2 hours ago, 192.168.2.11[192.168.2.11]...192.168.2.12[192.168.2.12]
r2-r2_lan{72}:INSTALLED, TUNNEL, reqid 1, ESP SPIs:c5b15128_i c18bf6e2_o
r2-r2_lan{72}:192.168.101.0/24 === 192.168.102.0/24
root@OpenWrt:~#
• また、PC1(192.168.101.102/24) から PC2 (192.168.102.247/24)にpingが到達し、かつ、
192.168.2.0のセグメントでICMPパケットが⾒当たらない事を確認する事でIPsecトンネルが
正常に動作している事を確認できる。
• ICMPパケットの有無をパケットキャプチャで確認する場合はOpenWrt 15.05 R1や OpenWrt
15.05 R2 以外のVMを別途作成して192.168.2.0/24のセグメントをキャプチャすること。
Copyright2016 Takashi Umeno
補⾜ luci (web設定)
OpenWrtのweb serverに接続した際にブラウザに下記が表⽰され設定などが⾏えない場合
がある。
/usr/lib/lua/luci/dispatcher.lua:255: No valid theme found
stack traceback:
[C]: in function 'assertʼ
/usr/lib/lua/luci/dispatcher.lua:255: in function 'dispatchʼ
/usr/lib/lua/luci/dispatcher.lua:168: in function </usr/lib/lua/luci/dispatcher.lua:167>
[ #16775 closed defect (fixed) ]https://dev.openwrt.org/ticket/16775
に従って
# opkg remove luci
# opkg remove luci-theme-bootstrap
# opkg install luci
を実⾏したら正常にWebブラウザ表⽰されるようになった。
Copyright2016 Takashi Umeno
参考URL
• https://openwrt.org/
• https://wiki.openwrt.org/doc/howto/vpn.ipsec.basics
• https://wiki.openwrt.org/doc/uci/ipsec
• http://qiita.com/t_umeno/items/57a66faa4e383c99745b
• http://qiita.com/t_umeno/items/4de97d1d005054cf7afd
• http://qiita.com/t_umeno/items/49c600ee17e009175309
Copyright2016 Takashi Umeno

More Related Content

What's hot

ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
Masahiro Nagano
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
Sen Ueno
 

What's hot (20)

ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門
 
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
 
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
 
本当は楽しいインターネット
本当は楽しいインターネット本当は楽しいインターネット
本当は楽しいインターネット
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
Proof summit 2017 for slideshare
Proof summit 2017 for slideshareProof summit 2017 for slideshare
Proof summit 2017 for slideshare
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 
mTCP使ってみた
mTCP使ってみたmTCP使ってみた
mTCP使ってみた
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Jenkinsはじめました - Yahoo! JAPANのCI+CD -Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
 
進化するIX
進化するIX進化するIX
進化するIX
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
 
QUICとNATと
QUICとNATとQUICとNATと
QUICとNATと
 
3GPP LTE introduction 1(Architecture & Identification)
3GPP LTE introduction  1(Architecture & Identification)3GPP LTE introduction  1(Architecture & Identification)
3GPP LTE introduction 1(Architecture & Identification)
 
IIJmio meeting #3 スピードテストについて考える
IIJmio meeting #3 スピードテストについて考えるIIJmio meeting #3 スピードテストについて考える
IIJmio meeting #3 スピードテストについて考える
 
ニコニコ生放送の配信基盤改善
ニコニコ生放送の配信基盤改善ニコニコ生放送の配信基盤改善
ニコニコ生放送の配信基盤改善
 

Viewers also liked

オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術
Masahiko Hashimoto
 

Viewers also liked (13)

OpenStack Liberty 外部ネットワーク側との通信
OpenStack Liberty 外部ネットワーク側との通信OpenStack Liberty 外部ネットワーク側との通信
OpenStack Liberty 外部ネットワーク側との通信
 
Softflowd_49.7d_20160723
Softflowd_49.7d_20160723Softflowd_49.7d_20160723
Softflowd_49.7d_20160723
 
サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)
サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)
サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)
 
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
 
VPNaaS in Neutron
VPNaaS in NeutronVPNaaS in Neutron
VPNaaS in Neutron
 
オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術
 
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
 
ルータ遊びことはじめ
ルータ遊びことはじめルータ遊びことはじめ
ルータ遊びことはじめ
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
 
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜  - OpenStack最新情報セミナー(2017年3月)最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜  - OpenStack最新情報セミナー(2017年3月)
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
 
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
 

Similar to OpenWrtによるサイト間IPsec接続

Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
SAKURA Internet Inc.
 
How_to_install_octave_ver1.0
How_to_install_octave_ver1.0How_to_install_octave_ver1.0
How_to_install_octave_ver1.0
Satoshi Kume
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
 

Similar to OpenWrtによるサイト間IPsec接続 (20)

Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタRancher2.3とwindows Containerで作るkubernetesクラスタ
Rancher2.3とwindows Containerで作るkubernetesクラスタ
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
 
How_to_install_octave_ver1.0
How_to_install_octave_ver1.0How_to_install_octave_ver1.0
How_to_install_octave_ver1.0
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
ssmjp-wireless-hack-with-macbook
ssmjp-wireless-hack-with-macbookssmjp-wireless-hack-with-macbook
ssmjp-wireless-hack-with-macbook
 

OpenWrtによるサイト間IPsec接続

  • 3. 動作環境 • OpenWrt 15.05, x86-generic版 • MacBook Pro (13-inch, Late 2011) • USB Ethernet NIC (LUA3-U2-ATX) • MacOSX 10.11.1 上の VirtualBox 5.0.10 r104061で確認 Copyright2016 Takashi Umeno
  • 4. OpenWrtのイメージ⼊⼿⽅法 • https://downloads.openwrt.org/chaos_calmer/15.05/x86/ge neric/ から下記をダウンロードする • https://downloads.openwrt.org/chaos_calmer/15.05/x86/ge neric/openwrt-15.05-x86-generic-combined-ext4.img.gz Copyright2016 Takashi Umeno
  • 5. VirtualBoxで扱う形式に変換 % VBoxManage convertfromraw --format VDI openwrt-15.05-x86-generic-combined-ext4.img openwrt-BB-15.05-x86.1.vdi % VBoxManage convertfromraw --format VDI openwrt-15.05-x86-generic-combined-ext4.img openwrt-BB-15.05-x86.2.vdi 同⼀のVirtualBox 上で使⽤するのでVBoxManageは2回実⾏して、openwrt-BB-15.05-x86.1.vdiと openwrt-BB-15.05-x86.2.vdi を作成する事。 % cp -p openwrt-BB-15.05-x86.1.vdi openwrt-BB-15.05-x86.2.vdi としても openwrt-BB-15.05-x86.1.vdi を使⽤している環境で openwrt-BB-15.05-x86.2.vdiを使⽤す ることはできない。 Copyright2016 Takashi Umeno
  • 6. VirtualBoxでVM作成 • VM1 • 名前: OpenWrt 15.05 R1 • オペレーティングシステム: Linux 2.6 /3.x /4.x (32bit) • メインメモリー: 256MB • ストレージ: openwrt-BB-15.05-x86.1.vdi • ネットワーク • アダプター1: (ブリッジアダプター, 'en1: Wi-Fi (AirPort)') • アダプター2: (ブリッジアダプター, 'en0: Ethernet') • VM2 • 名前: OpenWrt 15.05 R2 • オペレーティングシステム: Linux 2.6 /3.x /4.x (32bit) • メインメモリー: 256MB • ストレージ: openwrt-BB-15.05-x86.2.vdi • ネットワーク • アダプター1: (ブリッジアダプター, 'en1: Wi-Fi (AirPort)') • アダプター2: (ブリッジアダプター, 'en4: AX88772') Copyright2016 Takashi Umeno
  • 9. OpenWrt 15.05 R1の設定 • OpenWrt 14.07と異なり OpenWrt 15.05ではデフォルトでは wan側にeth1を割り当てている。 • /etc/config/network の設定変更を⾏った。 • wan側にeth0 (192.168.2.11/24)を割り当てる • lan側にeth1 (192.168.101.1/24)を割り当てる • デフォルトルートに192.168.2.1を指定する Copyright2016 Takashi Umeno
  • 10. OpenWrt 15.05 R1 設定変更後の /etc/config/network config interface 'loopbackʼ option ifname 'loʼ option proto 'staticʼ option ipaddr '127.0.0.1ʼ option netmask '255.0.0.0' config interface 'lanʼ option ifname 'eth1ʼ option proto 'staticʼ option ipaddr '192.168.101.1ʼ option netmask '255.255.255.0ʼ config interface 'wanʼ option ifname 'eth0ʼ option proto 'staticʼ option ipaddr '192.168.2.11ʼ option netmask '255.255.255.0ʼ config route option interface 'wanʼ option target '0.0.0.0/0ʼ option gateway '192.168.2.1' Copyright2016 Takashi Umeno
  • 11. OpenWrt 15.05 R1 設定変更後の /etc/config/firewall • パケットを破棄しないように した。 config defaults option syn_flood 1 option input ACCEPT option output ACCEPT option forward ACCEPT # Uncomment this line to disable ipv6 rules option disable_ipv6 1 config zone option name lan list network 'lanʼ option input ACCEPT option output ACCEPT option forward ACCEPT config zone option name wan list network 'wanʼ option input ACCEPT option output ACCEPT option forward ACCEPT # option masq 1 # option mtu_fix 1 config forwarding option src lan option dest wan # include a file with users custom iptables rules config include option path /etc/firewall.user # allow IPsec/ESP and ISAKMP passthrough config rule option src wan option dest lan option proto esp option target ACCEPT config rule option src wan option dest lan option dest_port 500 option proto udp option target ACCEPT Copyright2016 Takashi Umeno
  • 12. Web設定 ここまで設定した状態でOpenWrt 15.05 R1を再起動すると wan側(eth0)の192.168.2.1からOpenWrtのWebインタフェース に接続可能になる。 Webインタフェースから • DNSサーバの設定として192.168.2.1, 8.8.8.8を指定した。 • Webから管理者パスワードの設定を⾏った。 Copyright2016 Takashi Umeno
  • 14. OpenWrtの最新化 • コンソールから下記コマンドを実⾏して OpenWrtを最新化する # opkg update # opkg list-upgradable • list-upgradable で表⽰された luci各種upgradeした。 Copyright2016 Takashi Umeno
  • 15. OpenWrt 15.05 R2の設定 • OpenWrt 15.05 R1と同様の設定を⾏う • /etc/config/networkの設定は異なる。 Copyright2016 Takashi Umeno
  • 16. OpenWrt 15.05 R2 設定変更後の /etc/config/network config interface 'loopbackʼ option ifname 'loʼ option proto 'staticʼ option ipaddr '127.0.0.1ʼ option netmask '255.0.0.0' config interface 'lanʼ option ifname 'eth1ʼ option proto 'staticʼ option ipaddr '192.168.102.1ʼ option netmask '255.255.255.0ʼ config interface 'wanʼ option ifname 'eth0ʼ option proto 'staticʼ option ipaddr '192.168.2.12ʼ option netmask '255.255.255.0ʼ config route option interface 'wanʼ option target '0.0.0.0/0ʼ option gateway '192.168.2.1' Copyright2016 Takashi Umeno
  • 17. IPsec トンネル設定 • OpenWrt 15.05 R1(192.168.2.11) と OpenWrt 15.05 R2(192.168.2.12)の間で 192.168.101.0/24 と 192.168.102.0/24 を IPsecトンネルで接続する。 Copyright2016 Takashi Umeno
  • 18. strongswan-fullをインストール • opkg install strongswan-full を実⾏ • /etc/config/ipsec の設定変更を⾏った。 • R1 (192.168.101.0/24)とR2(192.168.102.0/24)の間でトンネルを掘る • R1でトンネルの送信先のIPアドレスは192.168.2.12 (R2のWANのIPア ドレス) • R2のトンネルの送信先のIPアドレスは192.168.2.11 (R1のWANのIPア ドレス) • 事前共有鍵は”yourpasswordhere” • /etc/init.d/ipsec のスクリプト変更した。 Copyright2016 Takashi Umeno
  • 19. /etc/init.d/ipsec 修正 [IPsec Basics]https://wiki.openwrt.org/doc/howto/vpn.ipsec.basics から #/etc/init.d/ipsec をコピペして実⾏すると下記の表⽰を出してエラーになる。 # /etc/init.d/ipsec start kmod-crypto-aes missing echo install with "opkg install kmod-crypto-aes --nodeps" # opkg install kmod-crypto-aes --nodeps を実⾏してもkmod-crypt-aes がインストールされない。 Copyright2016 Takashi Umeno
  • 20. /etc/init.d/ipsec 修正 • [Changeset 46483]https://dev.openwrt.org/changeset/46483 によるとaesはモジュールではなく、kernel内部に統合されたので、 /etc/init.d/ipsec は下記修正することで動作するようになった。 ※要はaesのモジュールのインストール有無を調べないようにした。 --- ipsec.old2015-12-0622:44:58.777630000+0900 +++ ipsec 2015-12-06 22:43:32.149651000 +0900 @@ -194,7 +194,7@@ exit fi - for f in aes authenc cbc hmac md5 sha1; do + for f in authenc cbc hmac md5sha1;do if [ `opkg list kmod-crypto-$f | wc -l` -eq 0 ]; then echo kmod-crypto-$f missing echo installwith "opkg installkmod-crypto-$f --nodeps" Copyright2016 Takashi Umeno
  • 21. /etc/config/ipsec の例に誤記載 • [Strongswan IPsec Configuration]https://wiki.openwrt.org/doc/uci/ipsec の Example 1 taken from the IPSec site to site howto. には、 config 'remote' 'acmeʼ option 'enabled' '1ʼ option 'gateway' '7.7.7.7ʼ option 'authentication_method' 'pskʼ option 'pre_shared_key' 'yourpasswordhereʼ list 'p1_proposal' 'pre_g2_aes_sha1ʼ list 'sainfo' 'acme_dmzʼ list 'sainfo' 'acme_lanʼ と記載されている。 Copyright2016 Takashi Umeno
  • 22. /etc/config/ipsec の例に誤記載 list 'sainfo' 'acme_dmz' list ʼsainfo' 'acme_lanʼ の記載は誤り list 'tunnel' 'acme_dmz' list 'tunnel' 'acme_lan' の様に'sainfo'ではなく'tunnel'を記載すること。 Copyright2016 Takashi Umeno
  • 23. OpenWrt 15.05 R1 設 定 変 更 後 の /etc/config/ipsec config 'ipsecʼ option 'zone' 'vpnʼ config 'remote' 'r2ʼ option 'enabled' '1ʼ option 'gateway' '192.168.2.12ʼ option 'authentication_method' 'pskʼ option 'pre_shared_key' 'yourpasswordhere' list 'p1_proposal' 'pre_g2_aes_sha1' list 'tunnel' 'r2_lanʼ config 'p1_proposal' 'pre_g2_aes_sha1ʼ option 'encryption_algorithm' 'aes128ʼ option 'hash_algorithm' 'sha1ʼ option 'dh_group' 'modp1024' config 'tunnel' 'r2_lanʼ option 'local_subnet' '192.168.101.0/24ʼ option 'remote_subnet' '192.168.102.0/24ʼ option 'p2_proposal' 'g2_aes_sha1ʼ config 'p2_proposal' 'g2_aes_sha1ʼ option 'pfs_group' 'modp1024ʼ option 'encryption_algorithm' 'aes 128ʼ option 'authentication_algorithm' 'sha1' Copyright2016 Takashi Umeno
  • 24. OpenWrt 15.05 R2 設 定 変 更 後 の /etc/config/ipsec config 'ipsecʼ option 'zone' 'vpnʼ config 'remote' 'r1ʼ option 'enabled' '1ʼ option 'gateway' '192.168.2.11ʼ option 'authentication_method' 'pskʼ option 'pre_shared_key' 'yourpasswordhere' list 'p1_proposal' 'pre_g2_aes_sha1' list 'tunnel' 'r1_lanʼ config 'p1_proposal' 'pre_g2_aes_sha1ʼ option 'encryption_algorithm' 'aes128ʼ option 'hash_algorithm' 'sha1ʼ option 'dh_group' 'modp1024' config 'tunnel' 'r1_lanʼ option 'local_subnet' '192.168.102.0/24ʼ option 'remote_subnet' '192.168.101.0/24ʼ option 'p2_proposal' 'g2_aes_sha1ʼ config 'p2_proposal' 'g2_aes_sha1ʼ option 'pfs_group' 'modp1024ʼ option 'encryption_algorithm' 'aes 128ʼ option 'authentication_algorithm' 'sha1' Copyright2016 Takashi Umeno
  • 25. IPsecの状態確認 • OpenWrt 15.05 R1 や OpenWrt 15.05 R2 で ipsec status や ipsec statusall を実⾏する事で 動作確認できる。 192.168.101.0/24 と 192.168.102.0/24 間で正常にIPsecのトンネルが作成されている状態で OpenWrt 15.05 R1 で ipsec status の実⾏結果を下記に⽰す。 root@OpenWrt:~# ipsec status Security Associations (1 up, 0 connecting): r2-r2_lan[21]:ESTABLISHED 2 hours ago, 192.168.2.11[192.168.2.11]...192.168.2.12[192.168.2.12] r2-r2_lan{72}:INSTALLED, TUNNEL, reqid 1, ESP SPIs:c5b15128_i c18bf6e2_o r2-r2_lan{72}:192.168.101.0/24 === 192.168.102.0/24 root@OpenWrt:~# • また、PC1(192.168.101.102/24) から PC2 (192.168.102.247/24)にpingが到達し、かつ、 192.168.2.0のセグメントでICMPパケットが⾒当たらない事を確認する事でIPsecトンネルが 正常に動作している事を確認できる。 • ICMPパケットの有無をパケットキャプチャで確認する場合はOpenWrt 15.05 R1や OpenWrt 15.05 R2 以外のVMを別途作成して192.168.2.0/24のセグメントをキャプチャすること。 Copyright2016 Takashi Umeno
  • 26. 補⾜ luci (web設定) OpenWrtのweb serverに接続した際にブラウザに下記が表⽰され設定などが⾏えない場合 がある。 /usr/lib/lua/luci/dispatcher.lua:255: No valid theme found stack traceback: [C]: in function 'assertʼ /usr/lib/lua/luci/dispatcher.lua:255: in function 'dispatchʼ /usr/lib/lua/luci/dispatcher.lua:168: in function </usr/lib/lua/luci/dispatcher.lua:167> [ #16775 closed defect (fixed) ]https://dev.openwrt.org/ticket/16775 に従って # opkg remove luci # opkg remove luci-theme-bootstrap # opkg install luci を実⾏したら正常にWebブラウザ表⽰されるようになった。 Copyright2016 Takashi Umeno
  • 27. 参考URL • https://openwrt.org/ • https://wiki.openwrt.org/doc/howto/vpn.ipsec.basics • https://wiki.openwrt.org/doc/uci/ipsec • http://qiita.com/t_umeno/items/57a66faa4e383c99745b • http://qiita.com/t_umeno/items/4de97d1d005054cf7afd • http://qiita.com/t_umeno/items/49c600ee17e009175309 Copyright2016 Takashi Umeno