mixiユーザー(id:2416887)

2023年02月23日06:07

214 view

StrongswanとSi-R系列の接続設定

この世の中で、
Si-Rは駄目だ、未来がない。
富士通もハードウェア作る気ないし、バグは放置するし、
サポートはクソでやる気がない、と散々罵りつつ、
限界まで使おうとするのは私だけだと思います。

ヤバい、これだけで特定されそう。
古河電工さんは頑張っていますね。純粋に応援しています。
次買うのはNEC UNIVERGEかYAMAHA新型買いたいです。

さて、Strongswanである程度設定が固まったので載せます。
dpd設定だけ少し怪しいのですが、まぁ絶望的に間違っているわけではないので。
時々、dpd TimeoutしてSA作り直すけど、一瞬で繋がるからそこまで致命的ではない。
誰か推奨設定教えてくれ。

今回、t4g smallを使っています。ARMのGraviton2です。
AES命令が実装されているので、通信していても最大5%しか動きません。
凄く繋げた場合はベースライン超えるかもしれません。
その場合はnano2台とか。small使っているのは無料枠なので。
後、数ヶ月でなくなるのでインスタンス変える予定。

===================================

strongSwan swanctl 5.7.2 です。
Strongswanのバージョンは現在5.9.9ですが、
CentOS/RHEL7がベースであるAmazon Linux 2ではこれが保証されている動作バージョンとなります。
代わりに、epolのyumでインストール出来ますので楽です。
ただし、こっちのパッケージだと、設定ディレクトリが少し変わっていまして、

/etc/strongswan/ strongswanディレクトリ
/etc/strongswan/swanctl/ swanctlディレクトリ
/etc/strongswan/swanctl/conf.d/ swanctl.confで記述した設定ファイルをぶちこむ場所

となっております。調査するとちょい場所違うので戸惑います。
swanctlも一緒にインストールされますが、初期状態ですとswanctlを実行するとエラーが出ます。
最初にcharon.confに手間を加えます。

■/etc/strongswan/strongswan.d/charon.conf
#内部記述のコメントアウトを消すと以下になります。
#みんな省略と入れるのはこれが所以です。
charon {
start-scripts {
swanctl = /usr/sbin/swanctl -q
}
crypto_test {}
host_resolver {}
leak_detective {}
processor {
priority_threads {}
}
start-scripts {}
stop-scripts {}
tls {}
x509 {}
}

■swanctl.conf記述 設定ファイル
■ここでは、/etc/strongswan/swanctl/conf.d/XXXXXX.conf とします。
#vpnとikeの後の-XXXXXXはサフィックスであり自由に名付け可能。
#ただし、他のconnections と被る名前は駄目。複数設定する場合は注意すること。
connections {
vpn-XXXXXX {
version = 1 #IKEv1
aggressive = no #絶対にNo
local_addrs = XXXX:YYYY:ZZZZ:PPPP::eeee
remote_addrs = ZZZZ:XXXX:PPPP:YYYY:dddd
mobike = no #UDP4500を使わせない
encap = no #カプセル化させない
proposals = aes256-sha256-modp2048
dpd_delay= 10s
dpd_timeout= 20s

local {
auth = psk
id = XXXX:YYYY:ZZZZ:PPPP::eeee #接続元 AWS EC2側
}
remote {
id = ZZZZ:XXXX:PPPP:YYYY:dddd #接続先 Si-R側
auth = psk
}
children {
vpn-sugitord {
esp_proposals = aes128-sha1-modp768
local_ts = 172.16.XXX.0/24
remote_ts = 192.168.ZZZ.0/24
dpd_action = clear
mode = tunnel
ipcomp = no
start_action = start # strongswan起動時、自動接続
close_action = start # 不明
}
}
}
}
secrets {
ike-XXXXXX {
id = ZZZZ:XXXX:PPPP:YYYY:dddd #接続先IP。恐らくこれで紐づけされている
secret = "pre-shared-key" #ダブルクオテーションで閉じる
}
}

■Si-R側 (G200を使用)
remote 10 name XXXXXX
remote 10 mtu 1436
remote 10 ap 0 name XXXXXXv6
remote 10 ap 0 datalink type ipsec
remote 10 ap 0 keep connect
remote 10 ap 0 ipsec type ike
remote 10 ap 0 ipsec ike protocol esp
remote 10 ap 0 ipsec ike range 192.168.ZZZ.0/24 172.16.XXX.0/24
remote 10 ap 0 ipsec ike encrypt aes-cbc-128
remote 10 ap 0 ipsec ike auth hmac-sha1
remote 10 ap 0 ipsec ike pfs modp768
remote 10 ap 0 ike mode main
remote 10 ap 0 ike name local ZZZZ:XXXX:PPPP:YYYY:dddd
remote 10 ap 0 ike name remote XXXX:YYYY:ZZZZ:PPPP::eeee
remote 10 ap 0 ike shared key text pre-shared-key
remote 10 ap 0 ike proposal 0 encrypt aes-cbc-256
remote 10 ap 0 ike proposal 0 hash hmac-sha256
remote 10 ap 0 ike proposal 0 pfs modp2048
remote 10 ap 0 ike proposal 0 prf hmac-sha256
remote 10 ap 0 ike dpd use on
remote 10 ap 0 ike dpd idle 10s
remote 10 ap 0 ike dpd retry 1s 3
remote 10 ap 0 tunnel local ZZZZ:XXXX:PPPP:YYYY:dddd
remote 10 ap 0 tunnel remote XXXX:YYYY:ZZZZ:PPPP::eeee
remote 10 ppp ipcp vjcomp disable
remote 10 ip route 0 172.16.XXX.0/24 3 1
remote 10 ip msschange 1372

以上。
正常に繋げているかは、
sudo swanctl -l

ログは
sudo swanctl --log

設定修正後の再ロードは、
sudo swanctl -q
全部ロードする。-cのみだと、secret読まないので、All Loadする事。

詰まったときは、
sudo systemctl restart strongswan
SAを大量に作られた際、Outbound SA install faildが発生するため、その場合はリスタートが早い。


特筆するならば、

Ikev2の場合は、DPD切断後動作にSA生成が無限ループする。
この辺の実装はSi-Rがきな臭い。でも、Strongswanの5.9.Xの場合、動作改善するかもしれない。
IKEv2 Make Before Break が怪しいと思っている。でも、swanctl.confでこの辺の動作は固定できないので、今回は諦めてIkev1 Mainモードをを利用した。
なので、Ikev1を使用している。Mainモードで使用するように。
aggresiveで建てるぐらいなら、Softetherサーバーにしろ。
そして、Si-Rは産廃にスクラップとして売れ。

remote 10 ap 0 ipsec ike rangeを書くのは必須。
これに関してはニフクラも同様。これ書かないと接続できない死ぬ。

IKE認証時は暗号レベル高いのに、IPSecでは暗号レベルを落としている。
これの理由は、スループットが落ちたから。10MB/sが2.5MB/sまで落ちる。
原因は、Si-R側の性能不足。まぁ10年前の機体なので。
FPGAで暗号化アクセラレータ作られていたと思う。

remote 10 ap 0 ike dpd idle 10s
remote 10 ap 0 ike dpd retry 1s 3
は初期値のため、書き込んでも設定は残らない。
でも、Si-RのDPDは少し奇妙な動作しているので知ってほしくて書いた。
swanctlの dpd_delay= 10s はマージン持たせないといけんかもしれん。8sあたりで丁度良いか?
dpd_timeout= 20s はマージンがでかいかも。DPD非応答時は10秒超えた時点で、Si-R側が必死になるし、strongswan側はdpd delay 10秒以内に返すハズ。
この辺かち合わないと、Strongswan側のSAが消される。
Ikev2では致命的だったが、ikev1だと無限ループには陥らず、スッと繋がってくれるぞ。

この設定、維持でもNATトラバーサルは使わないし、UDPカプセルも使わない方法です。
encap = no の部分をいじって。

mobike = no に関しては、テンプレートにあったが詳しくわからないという人が多数いる模様。
実際に何をするかというと、UDP500が使えない場合、UDP4500で通信しようとしたりする。
つまりUDP4500を開けてない場合は、yesにしておくと失敗する時がある。
おそらくモビリティIKEの略?

remote 10 ip msschange 1372の意味。
MTU1436はAWS側の推奨値であり、一応1500から暗号化計算するとこの数値。
そこからIPヘッダ分とIPv6 TCP分を引くため、最適値は1376のはず。
でもなんか4バイト減らしているのは、なんか安心感を出したいから。
IPV6は固定長なので、60引けばちゃんと動作するはず。

今回、AWSのVPNとして、IPv6は使えないSite-to-Siteを捨てて、
EC2 Strongswanによるnet.ipv4.ip_forwardを利用しています。
埼玉エリア TransixのIPv6回線で、AWSとのpingは6-12msあたり。
GPON 100Mbpsだが、scpの速度は平均10.3MB/s 出ていた。
DirectConnectやクラウドゲートウェイ使わなくともこれだけ出れば問題あるまい。
なんでSite-to-SiteのIPv6 insideだけでOutside出来ないのか?
EC2上だと不可能じゃないのだが、難しいのはBGPあたりかな?

とにかく雑に書いたけど、ヒントにはなるはず。
この結果って、他の調査した上で、わかりにくいところを調査して載せまくった資料になります。
これにいたるまで20時間ほど費やしているので、ヒントにしてくれると嬉しい。

それではまた。
1 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する

<2023年02月>
   1234
567891011
12131415161718
19202122232425
262728