2&>1

AWSとかGCPとかGolangとかとか

CentOS7でEFS接続させる

CentOS7からEFSへマウントします。

AmazonLinux2版はこちら

dev-error.hatenablog.com

EFS準備

前回参照

EC2側準備

前回同様以下の2パターン

1.amazon-efs-utils パッケージを使用する

2.nfs-utils を使用する

amazon-efs-utils パッケージを使用する場合

yumですんなり入らないです。ので以下コピペ

sudo yum -y install git
git clone https://github.com/aws/efs-utils
cd efs-utils
sudo yum -y install rpm-build
sudo make rpm
sudo yum -y install ./build/amazon-efs-utils*rpm

・マウントする

sudo mount -t efs [ファイルシステムID]:/ /mnt/efs

・EFS経路の暗号化を行う場合

少々面倒

AmazonLinux2同様にそのまましようとしたら以下エラーが表示される

WARNING: Your client lacks sufficient controls to properly enforce TLS. Please upgrade stunnel, or disable "stunnel_check_cert_hostname" in /etc/amazon/efs/efs-utils.conf.
See https://docs.aws.amazon.com/console/efs/troubleshooting-tls for more detail.

stunnelをバージョンアップしろとのこと

もともとのバージョンはこれ

$ /bin/stunnel --version
Clients allowed=500
stunnel 4.56 on x86_64-redhat-linux-gnu platform
Compiled/running with OpenSSL 1.0.1e-fips 11 Feb 2013
Threading:PTHREAD Sockets:POLL,IPv6 SSL:ENGINE,OCSP,FIPS Auth:LIBWRAP
Reading configuration from file --version
Cannot read configuration

バージョンアップ手順はここにあったりするけどそのままだとうまく行かなかったので少々修正

docs.aws.amazon.com

手順通りにすると

sudo yum install -y gcc openssl-devel tcp_wrappers-devel
sudo curl -o stunnel-5.49.tar.gz https://www.stunnel.org/downloads/stunnel-5.49.tar.gz
sudo tar xvfz stunnel-5.49.tar.gz

でエラーが。。

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

どうにも解決できなかったので現在の最新安定版をダウンロードする

sudo yum install -y wget
wget https://www.stunnel.org/downloads/stunnel-5.50.tar.gz
tar zxvf stunnnel-5.50.tar.gz
sudo ./configure
sudo make

インストール前に古いものを削除してインストールしてリンク作成

sudo rm /bin/stunnel
sudo make install
sudo ln -s /usr/local/bin/stunnel /bin/stunnel

アップデート後のバージョン

$ stunnel --version
[ ] Clients allowed=500
[.] stunnel 5.50 on x86_64-pc-linux-gnu platform
[.] Compiled/running with OpenSSL 1.0.2k-fips  26 Jan 2017
[.] Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
[ ] errno: (*__errno_location ())
[!] Invalid configuration file name "--version"
[!] realpath: No such file or directory (2)
[ ] Deallocating section defaults

なんかバージョン以外も変わってるけど。。

更にutilsのコンフィグ/etc/amazon/efs/efs-utils.confも修正

sudo vi /etc/amazon/efs/efs-utils.conf

以下項目をfalseに変更

stunnel_check_cert_hostname = true
stunnel_check_cert_validity = true

・やっとマウント

sudo mount -t efs -o tls [ファイルシステムID]:/ /mnt/efs

成功

・自動マウント

AmazonLinux2のときと同じです。

nfs-utils を使用する

これはAmazonLinux2のときと同じです。

まとめ

AmazonLinux以外でEFSを使う場合はどっちがいいでしょうね。

暗号化必要ならamazon-utils一択ですけど、不要ならnfs-utilsが楽ですかね。

まぁ導入台数が多くなければそんな手間じゃないですけどね。

以上