2013年5月6日月曜日

クラウド AWS EC2 環境構築

[Elastic IP]
  ・固定のグローバルIPアドレスを確保してくれるサービスであるElastic IPを使用する
   ※Elastic IPのサービスはインスタンスに紐付けている限り無料、逆に言えば、固定IP確保だけを行って紐付けしないと料金が発生
  
  ・左のタブの"Elastic IPs"をクリック、"Allocate New Address"をクリック、確認画面が出るので"Yes, Allocate"をクリックで確保される
    ⇒"54.249.106.XXX"
   "Associate Address"をクリック、稼働中のインスタンスを選択(i-6c6fb56e)、"Private IP Address"を選択して、
   "Allow Reassociation"にチェックを入れて、"Yes, Allocate"をクリック
    ⇒"ec2-54-249-106-115.ap-northeast-1.compute.amazonaws.com"
   ※"Associate Address"をクリックの手順はインスタンスの再起動ごとに必要になる操作であることに注意

[root環境構築]
  ・rootユーザのパスワードを設定する
   $ sudo passwd
   > Enter new UNIX password:
   > Retype new UNIX password:
   > passwd: password updated successfully
  
  ・rootでログインする
   $ su -
   > Password:

[WinSCP環境構築]
  ・ダウンロードした秘密鍵(XXX.pem)をPuTTY形式に変換する
    - スタートメニューからPuTTYgenを起動
    - Conversions → Import keyをクリックして、XXX.pemを開く
    - Key passphrase、Confirm passphraseにパスワードを入力
    - Save private keyをクリック
  
  ・rootユーザでログインできるようにする
   $ sudo less /etc/ssh/sshd_config
   > Subsystem sftp /usr/lib/openssh/sftp-server
   
   $ sudo visudo
   (変更前) > %admin ALL=(ALL) ALL
   (変更後) > %admin ALL=(ALL) NOPASSWD:ALL
    ⇒sudoでパスワードを聞かれないようにする(WinSCPのログインでsudoするとパスワードを聞かれるが入力できないため)
   
   (追加) > Defaults:%admin !requiretty
    ⇒ttyでログインしたユーザにsudoさせる設定
   
   WinSCPの設定
    - 環境→SFTP→SFTPサーバに"sudo /usr/lib/openssh/sftp-server"を設定
     ⇒root権限でログインできた

[ubuntu上でパケットキャプチャ]
  ・Interfaceのリレーサーバのパケットを除外する
   # ping interface.silentsystem.jp
   > 54.248.35.221
   ※Temp  :OID 1.3.6.1.4.1.37510.0.1、コミュニティ public54017、更新間隔 120秒
   ※Humidity:OID 1.3.6.1.4.1.37510.0.2、コミュニティ public54017、更新間隔  30秒
  
  ・tcpdumpでパケットをキャプチャする
   ※SNMPポート(161番)のみ:port 161
   ※名前解決をしない:-n
   ※Interfaceのリレーサーバを除外:not host 54.248.35.221
   # tcpdump -n port 161 and not host 54.248.35.221
   > 20:36:04.389879 IP 49.105.23.9.30161 > 172.31.27.207.161:  SetRequest(49)  .1.3.6.1.4.1.37510.0.1=249 .1.3.6.1.4.1.37510.0.0.0=1234
   > 0x0000:  4500 005c 238a 0000 6c11 1aa7 3169 1709  E..\#...l...1i..
    ⇒ 3169 1709はSRC IPアドレス
   > 0x0010:  ac1f 1bcf 75d1 00a1 0048 334a 303e 0201  ....u....H3J0>..
    ⇒ ac1f 1bcfはDST IPアドレス、75d1はSRC PORT 00a1はDST PORT、0048はパケット長、334aはチェックサム、それ以降はデータ
    ⇒ 303e:データ列+長さ3E(62)
      020100:SNMPバージョンV1 ※00は次行
   > 0x0020:  0004 0670 7562 6c69 63a3 3102 0201 0d02  ...public.1.....
    ⇒ 04 0670 7562 6c69 63:文字列+public
      a3 31:Set Request+長さ31(49)
      02 0201 0d:連番+010d
   > 0x0030:  0100 0201 0030 2530 1006 0a2b 0601 0401  .....0%0...+....
    ⇒ 02 0100:エラーコード+00
      0201 00:エラーインデックス+00
      30 25:データ列+長さ25(37)
      30 10:データ列+長さ10(16)
      06 0a:OID+長さ0a(10)
      2b 0601 0401 82a5 0600 01:1.3.6.1.4.1.37510.0.1
   > 0x0040:  82a5 0600 0102 0200 f930 1106 0b2b 0601  .........0...+..
    ⇒ 02 0200 f9:温度データ+00f9(249)
      30 11:データ列+長さ11(17)
      06 0b:OID+長さ0b(11)
      2b 0601 0401 82a5 0600 0000:1.3.6.1.4.1.37510.0.0.0
   > 0x0050:  0401 82a5 0600 0000 0202 04d2            ............
    ⇒ 0202 04d2:デバイスID 04d2(1234)

[ubuntu上でSNMPサーバのコンパイルから起動まで]
  ・スクリプトの内容:killserver
   # less killserver
   > #kill -9 `ps -fe|grep snmpserver|egrep -v grep|awk '{print $2}'`
   > pkill snmpserver
    ⇒pkillコマンド:指定したプロセスをkillする
  
  ・スクリプトの内容:serverstart
   # less serverstart
   > #!/bin/sh
   > /root/snmpserver $1 $2 $3 $4 $5 $6 &
  
  ・SNMPサーバプログラムのアップロード(コピペ)
   # cat > snmpserver_dk.c
    ⇒snmpserver.cの内容をコピーして貼り付け、完了したらCtrl+Dで終了(snmpserver_dk.cが生成される)
  
  ・SNMPサーバプログラムのコンパイル
   # gcc -o snmpserver_dk snmpserver_dk.c
    ⇒snmpserver_dkが生成される
  
  ・既存のSNMPサーバプログラムの停止
   # pkill snmpserver
  
  ・SNMPサーバプログラムの起動
   # snmpserver_dk &

0 件のコメント:

コメントを投稿