EC2でvsftpdのpasv_addressをbootupのしかけでどうにかする
AWSのEC2くそおそいね!(挨拶)
LargeがさくらのVPS 4Gの4倍くらい遅い!値段何倍だよ!(挨拶)
Groongaをビルドしたら30分かかった!(挨拶)
ーー
AWSを仕事で使う機会が最近また出てきました。
まあそれがどうしたって感じですけど、まあ今までとちょっと違う感じのお客さんなのです。
まあ、うまくぼかして言うと、FTPとかつかえないとダメなんですよね。びたいちぼかせてないけど。
「えーマジFTP?」「FTPが許されるのは・・・」
世の中にはFTPがないと呼吸困難になって死ぬ人がいるらしいので、仕方がありません*1
オチ
yum install vsftpd
してvsftpを入れて、
AWSのセキュリティゾーンに
Custom TPC rule
Port range:60000-60010
Source:0.0.0.0/0
と
Custom TPC rule
Port range:21
Source:0.0.0.0/0
みたいな設定をした上で、vsftpd.confに
pasv_min_port=60000
pasv_max_port=60010
pasv_address=123.123.123.123(EC2インスタンスの、パブリック側IPアドレス)
こんなのを追記してvsftp再起動すれば完璧ですね。*2
EC2がオチるとオチがつかない
で、上はネットのかしこにある情報なんですけど、これEC2再起動したらダメなんですよね。
ElasticIP(固定IP)つけておけばオッケーですけど、無いとダメです。
AWSってどんどん増やせるのが前提じゃないですか、そうなるとElasticIpをつけたり外したりとかまじ☆めんどい!
ただ、そうなると再起動する度にいちいちSSHでログインして、
pasv_address=123.123.123.123
を書き換えるとかしなきゃいけない。
なにそれAMI保存しておけばいくらでも増やせるのがクラウドじゃないの?マジ☆メンドイ!
スクリプトを設定しましょう
ってことで、スクリプトつくればいいんだよね。
#!/usr/bin/perl $PUBLIC_IP = `curl http://169.254.169.254/latest/meta-data/public-ipv4`; $TMPL = '/etc/vsftpd/vsftpd.conf.tmpl'; $CONF = '/etc/vsftpd/vsftpd.conf'; open $fh, "<", $TMPL; open $oh, ">", $CONF; while(<$fh>){ $_ =~ s/_REPLACE_TO_PUBLIC_IP_/$PUBLIC_IP/g; print $oh $_; } `/etc/init.d/vsftpd restart`
こんなコードを保存して、/etc/rc.localあたりから呼ぶようにしておくといいですね。
その前に、
/etc/vsftpd/vsftpd.conf.tmpl
ってファイルをつくっておいて、
pasv_address=_REPLACE_TO_PUBLIC_IP_
って書いておいてね、置換されるよ!
オチの解説
curl http://169.254.169.254/latest/meta-data/public-ipv4
こんなのをEC2インスタンスから実行すると、パブリックのIPがとれる。
他にも色々とれるので
curl http://169.254.169.254/latest/meta-data/
とかやってみるといいね。
curl http://169.254.169.254/latest/user-data/
とかもググってみるといいよ。
っていうかね、いまさらこれ知ったよ俺。しらなかったよ俺。どんだけAWS活用してないの俺。