2017年2月11日土曜日

AWSのVPCでCisco機器とVPNを貼った時のメモ

■目的
AWSのVPCでオンプレ環境にあるCisco(CISCO1921)とVPNを貼るときに気になった事

■内容
VPC接続で一台のCiscoから2本のVPNを貼って冗長化を行なっている
トンネルの設定はAWSで自動生成されたコンフィグ
VPNが一本切れた場合、ルーティングで2本目のVPN経由にルートが変わるように設定している。
interface Tunnel1
 ip address XXX.XXX.XXX.XXX 255.255.255.252
 ip mtu 1422
 ip virtual-reassembly in
 ip tcp adjust-mss 1379
 tunnel source XXX.XXX.XXX.XXX
 tunnel mode ipsec ipv4
 tunnel destination XXX.XXX.XXX.XXX
 tunnel protection ipsec profile XXXX
!
interface Tunnel2
 ip address XXX.XXX.XXX.XXX 255.255.255.252
 ip mtu 62
 ip virtual-reassembly in
 ip tcp adjust-mss 1379
 tunnel source XXX.XXX.XXX.XXX
 tunnel mode ipsec ipv4
 tunnel destination XXX.XXX.XXX.XXX
 tunnel protection ipsec profile XXXX

 ip route AWS側のセグメント 255.255.255.0 Tunnel1 track 100
 ip route AWS側のセグメント 255.255.255.0 Tunnel2 track 200
こんな感じ

最近通信が不安定という問い合わせを受けて調べた中で気になったことを記載する。

■①VPNトンネルのBandWidthが100k/bps
トンネルのsh interface statusを確認すると

Tunnel1 is up, line protocol is up 
  Hardware is Tunnel
  Internet address is XXX.XXX.XXX.XXX
  MTU 17862 bytes, BW 100 Kbit/sec, DLY 50000 usec, 
     reliability 255/255, txload 2/255, rxload 1/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set

どうやらデフォルトで100Kbit/sec表示になるらしい。
AWS側には設定するところがないので、こちら側で設定変更させるとオートで反映されると思う。
トンネルの設定で
(config-if)#bandwidth 100000
再度設定を確認すると
  Tunnel1 is up, line protocol is up 
  Hardware is Tunnel
  Internet address is XXX.XXX.XXX.XXX
  MTU 17862 bytes, BW 100000 Kbit/sec, DLY 50000 usec, 

BandWidthが変更されている。
ただこれは本当に効いているのか、気休めなのかは謎である。

■②通信が不安定な原因
結論から言うとVPNで使用する暗号化強度が強すぎてCISCO1921では通信を流すとCPUが張り付いてしまう程の高負荷だった。

crypto ipsec transform-set XXX.XXX.XXX.XXX esp-aes 256 esp-sha256-hmac 
aes256だと負荷が高すぎたので

crypto ipsec transform-set XXX.XXX.XXX.XXX esp-aes esp-sha-hmac 
に変更したところ改善した。


■終わり
VPC側の設定ではできることに限りがあるので、オンプレ側の設定を変えたら
VPNを一回切断して再度接続することで設定が反映される。

私の体験が誰かの生産性向上に役立っていただけることを祈って

2016年10月16日日曜日

CentOS7導入したRaspberry Pi 3 の基礎設定(領域拡張・無線LAN・日本語キーボード・pip利用)

■目的
普段はubuntuで使っているラズパイ3ですが、試しにCentOS入れてスクレイピング用にpythonコードを仕込もうと思った際のメモ
Python2はデフォルトでインストールされているので使えるのですが、python3を入れようとしたのですがpyenvでの導入はうまくいかなくて諦めました。

■参考にさせて頂いたサイト
http://yomon.hatenablog.com/entry/2016/04/17/152031
http://pppurple.hatenablog.com/entry/2016/01/24/213645
http://uxmilk.jp/12691

■内容
ラズベリーパイにCentOSを入れて初期設定してみる。
こちらの方のやり方を基本忠実に実施していく。
http://yomon.hatenablog.com/entry/2016/04/17/152031

□Rootパーティションのサイズ拡張
の項目にありますが、16GのSDカードを使っているのですが最初dfで見るとroot領域が2Gしか見れないです。
root領域の拡張の仕方ですが、READMEに書いてあるやり方をするとKernel Panicで起動しなる。とありましたが私はREADMEに書いてあるやり方ですんなり拡張できました。

デフォルトのディレクトリ(/root)配下にREADMEがあり、そこに書いてある以下を実行

== CentOS 7 userland ==

If you want to automatically resize your / partition, just type the following (as root user):
touch /.rootfs-repartition
systemctl reboot

再起動後のdfで正常に認識していました。

□Wi-Fiの設定
続いてWifiを使えるようにする設定ですが、一回有線でインターネット接続できる環境にした後
同じくREADMEに書いてある以下を実行

curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/54bab3d6a6d43239c71d26464e6e10e5067ffea7/brcm80211/brcm/brcmfmac43430-sdio.bin > /usr/lib/firmware/brcm/brcmfmac43430-sdio.bin

curl --location https://github.com/RPi-Distro/firmware-nonfree/raw/54bab3d6a6d43239c71d26464e6e10e5067ffea7/brcm80211/brcm/brcmfmac43430-sdio.txt > /usr/lib/firmware/brcm/brcmfmac43430-sdio.txt

上記実行後に念のためrebootするとwlan0が確認できたので、後は本文通り
# nmcli d wifi
-> Wifiアクセスポイントのリストが一覧されます
# nmcli d wifi connect <your_uuid> password <your_keyphrase>
# nmcli d
無線LANの設定をします。

□次に(本当は最初にやっておけばよかった)USBキーボードを日本語入力にします。
 http://qiita.com/sh1k1ya/items/c025bb4d9ca207aacaaa
 色々なサイトに記述がありますが、基本
 「localectl set-keymap jp106」
 のコマンド実行で対応できました。

 後はyum update/selinux/firewalldあたりのアップデートや設定をして基本的には使える状態になりました。

□次にpython3を動かそうと入れたかったので
 http://pppurple.hatenablog.com/entry/2016/01/24/213645
 を参考にpyenvでインストールしようと思ったところ
 pyenv install 3.5.Xが一向に終わらなかったので諦めて標準で使えるpython2でスクレイピング用のコードを書こうと思いpip installで「feedparser」を入れようと思ったのですがpipが使えませんでした。

□yum installしようとしたのですが、そもそもラズパイはARM仕様なのでepelが使えず、pipを入れることができないという仮説に行き着きました。
 そこで
 http://uxmilk.jp/12691
 に記載のある方法でpipを使えるようにしました。


■終わり
やっぱりラズパイをcentで使うメリットはあまりないかも。
ubuntuで使っていればもっと楽にセットアップできたかもしれません。
まぁいい勉強になりました。

私の体験が誰かの生産性向上に役立っていただけることを祈って

 







2016年9月4日日曜日

ios アプリをAppleの「審査へ提出」まで持っていくまでのまとめ

■目的
アプリを作るのもさることながら、Appleから公開するまでのお作法も大変だったのでまとめたいと思います。
正直自分でもよくわかっていないところや、順序など若干忘れてしまって怪しいところがありますが、ご参考までに見て頂ければと思います。

■参考にさせて頂いたサイト
http://examination-03.hatenablog.com/

■内容
前回の続きですが、Appleに12000円払った後、特にメール等は来ませんでした。
Developer CenterのAccount→membersipを確認すると


TeamIDや有効期限などが記載されていたので大丈夫なようです。
「Certificates,Identifiers&Profiles」でios Certificateをcreateしましたが、
これはやった方が良いのか今ひとつよくわかりませんでした。

ここからがApple審査までの流れを記載しますが、

■前提
・元々持ってたアカウントでxcode開発していた。
・develop用に別アカウントを作成して、こちらのアカウントで作業をしていく
・今回のアプリは無料のアプリ
・広告等も一切ない、どこかと通信することもないアプリをリリースします。

①xcodeにDeveloperアカウントを登録する
②Dev CenterにAppIDの登録 
③Deviceの登録
④itune connectの登録
 の順で進んでいきたいと思います。

①xcodeを立ち上げてxcodeメニューの「Preference」に
 ・Apple IDsという欄があるので、一つ前の記事で作成したDeveloper登録したアカウントを登録します。
  少し時間を置いて確認するとteamとrole欄が正常に反映されていると思います。

②Dev CenterにAppIDの登録 
Dev Centerにログインし、メニューから「Certificates,Identifiers&Profiles」を選択
Identifiers にて App IDs 右上の「+」
Registering an App ID
の項目を埋めていきます。

App ID Description 
name:アプリ名

App ID Prefix
これがあなたのTeam ID

App ID Suffix
Explicit App ID
Bundle ID: ここ※XcodeのInfo.Plistの「Bundle Identifier」の値と同じ文字列を入力

なんですが、通常(xxx.アプリ名)になっていると思います。
後述しますがアプリをxcodeからituneにあげるときにここが合ってないとエラーになります。
ですが私は今までdeveloperではないアカウントでアプリ開発していたので
XcodeのBundle Identifierが 例) imamade.apptest という名前でした。
developerのアカウントで進めるので 例) developer.apptest になります。
結論どうしたかというと、上記のBundle IDを
Bundle ID:apptest
xcode側のidentifierを apptest だけに変更して登録しました。
#今の段階で何言っているかわからないと思いますが、後で読み返してみてください。

□Xcodeのidentifierはここになります。ここを編集しました。
 またteamのところをこれまで使ってたアカウントからDeveloper用のアカウントに変更して作業していきます。







これで②は終了。

次に③Deviceの登録
・xcodeの①で作ったPrefarenceでdeveloperアカウントになっていることを確認
・先ほどのxcodeのidentifierでteamのところをDeveloper用のアカウントに変更
・MACにiphoneを繋いでxcodeから実機転送してみてください。
その後少し時間を置いてDev CenterのDevice欄を確認すると自動的にDeviceが登録されていると思います。

*Device登録が成功すると、App IDs等に「XC Wildcards」なるものが出現するようになった。
http://stackoverflow.com/questions/37621483/why-does-xcode-create-non-wildcard-app-ids-called-xc-wildcard
 どうやらDebag用の物なので放置することにしよう。

ここまできたら
後はitune connectとの戦いになります。

④itune connect
 
https://itunesconnect.apple.com/ にアクセス。
 Developer用のアカウントでログインする
 
  マイ APP をクリック +でアプリを追加
 
  左側のメニューを含め、ここの項目を全て埋めて審査まで持っていければゴール
 ざっくり入力項目について記載していく。
 □APP情報
  ・アプリ名の入力
  ・カテゴリなどは自身の作成したアプリのカテゴリを記載
  ・バンドルID:は注意、xcodeのidentifierと同じにする必要がある 例) apptest
  ・SKU:なんでも良いらしい。私は 例)apptest.developer とした
  ・プライバシーポリシーは無し

 □価格および配信状況
  ・私は無料アプリなので無料を選択
  ・割引無しで配信可能を選択

 □ios APP 1.0
  ・App プレビューとスクリーンショット 
   iphone用のプレビュー画像は 解像度:72 1242×2208 の縦横比で登録できました。
   ipad用のプレビュー画像は 解像度:72 2048×2732 の縦横比で登録できました。
  ・概要 :アプリの概要
  ・キーワードをカンマ区切りで何個か追加
  ・サポートURL 必須だった 自身のホームページを指定
  ・マーケティングURL 空欄

  APP 一般情報
  ・アプリのアイコン 1024×1024 のサイズで登録
  ・Versionは初回なので1.0
  ・年齢制限指定:いくつか質問されるのでそれに答えると自動的に決まる
  ・copyrightを記載
  ・後は住所・電話番号などを記載 電話番号は日本の場合+81を先頭につけます。
  ・デモアカウント:アプリでアカウントを使う場合のアカウントのようです。
  ・リリースのタイミング:自動的にリリースにしました。

 ★ビルド
  ビルド項目については、xcodeからの操作になります。
  http://examination-03.hatenablog.com/entry/2014/08/08/000000
  を参考にしながらxcodeにてアーカイブのアップロードを行います。

MacPCのxcodeメニューから以下のように遷移
・Product → Scheme → Edit Scheme を選択
 
・Schemeの設定画面が表示されるので、
 Build Configration を Release に変更  ←アップロード終わったら後で元のdebugに戻しておきました。

・xcode上部にてDeviceが「iOS Device」に設定

・メニューから以下のように遷移
 product → Archive を選択
 
・ビルドが完了すると Organizer が自動で開き Archive したアプリが表示される
 Validate をクリック

・Provisioning Profile を選択
 Validate ボタンをクリック

※ここで失敗する場合、iTunes Connect内で入力したアプリのバージョン番号と、Xcode上のバージョンが異なる可能性があります。
もう一つのパターンがidentifierの不一致になります。
ここで上を思い出してください。 私はこれでハマりました。
xcodeのidentifierとDev CenterのAPP IDsで登録したidentifierを揃えてください。

・ここまできたらitune Appにアップロードボタンを押してアプリをアップロードしましょう。
成功すると以下のようになります。


この後数分間待ちましょう。
数分たったらitune connectに再度アクセスするとアクティビティメニュー欄にuploadしたアプリが表示されていると思います。

ios APP 1.0 項目のビルド欄に行きましょう。
+が追加されていると思いますのでそこからアプリを選びましょう。

これで大体一通りitune connect上の入力項目が埋まったのではないかなと思います。
それでは保存して「審査へ提出」を行いましょう。

■終わり
ちょっと誤解がありそうな表現ですが、自分で一回やってみて思ったのは

itune connect ← アプリ提出に必要な情報を纏める。
   ⇅
 Dev center  ←アプリ、端末、開発ライセンスを管理している
   ⇅
     xcode   ←どのアカウントで開発するのか

みたいな理解で覚えておこうと思いました。

私の体験が誰かの生産性向上に役立っていただけることを祈って





2016年8月24日水曜日

AppleのDeveloper登録する時のまとめ(注意すること・気をつけること)

■目的
お久しぶりです。
最近Swiftでアプリ開発を学んでまして・・・
一つアプリ公開でもしてみようかと思ったのですがDeveloper登録で
色々と注意するところや、仕様が変わっているようで情報をまとめたいと思います。


■内容
まず iOS Developer 登録しようと思い色々とググったのですが、登録のページが見当たらない。
よくよく調べると


今Apple Developer Programという形に統合されていたのでiOS用という括りはなくなっているようでした。#いきなり出鼻を挫かれました。

の右下にあるデベロッパアカウントをクリック


②Apple IDを持っているけど今回は新規に「Create Apple ID」します。

こちらの方の記事を拝見したところ、
Developerアカウントは普段使っているアカウントと
分けておいた方が良いという事に私も行き着いたので
なるべくイングリッシュでDeveloper用の
アカウントを作ろうと思います。

③流れに沿ってアカウントを作っていきます。#英語表記で
 国はjapanを指定します。
一通り情報を入力したら
コンテニューすると、以下の同意を求められるので
チェックボックスにチェックしてさらに続ける。
すると登録したメールアドレスに番号が届くので、
その番号を画面に入力しVerifyする。

これでアカウントは出来た。

デベロッパー登録するための処理を続ける
発行されたアカウントでもう一度ログインし直すと

どこでデベロッパープログラムが購入出来るのか彷徨いながら
一番下の「join the Apple Developer Program」をクリック


右上のenrollからもう一度登録処理のようなものを繰り返す。

ここのEntity Typeで個人か法人かなんとかかを選ぶようなので
今回は個人的なアカウントなのでsingle personを選んだ。

また必要情報を入力していく。
住所等を2カ所入力するところがあるが個人申請のせいか2個目も1個目と同じ内容が
勝手に入りました。#当然ですが英語で住所など書きました。
#電話番号もカントリーコードに81を入れました。

ようやくお目当のところまで来た
当然購入を進めます。


ここでようやく購入画面
名前のところは英語表記のローマ字入力が自動でされていた。
これを日本語に変えてしまうと恐らく
こちらの方の「失敗していたパターン」に入ってしまうと思うので気をつけて・・・
私は一応住所とかもできるだけ英語表記にしておきました。

話逸れますが税込みだと12000円Overかー、Appleさん中々な事してくれますねー

そして
ようやく購入出来た・・・
なんだかんだ時間かかった。

とりあえずこれでAppleからメールが届くのを待ちます。

■終わり
Developer登録するだけで疲れた・・・
Activateが正常に出来たら
Appをリリースできた時にまた会いましょう。
Activateでつまづいたら、また明日お会いしましょう。

私の体験が誰かの生産性向上に役立っていただけることを祈って

2016年5月21日土曜日

3d party の SFP を使うときの注意点


■目的
Ciscoの純正SFPが高いので3d-partyのSFPを使おうと思った。

■内容
Cisco機器で普通に純正品ではないSFPを挿すと
%GBIC_SECURITY_CRYPT-4-VN_DATA_CRC_ERROR: GBIC in port Gi2/1/1 has bad crc
%PM-4-ERR_DISABLE: gbic-invalid error detected on Gi2/1/1, putting Gi2/1/1 in err-disable state
といったエラーが出ることがあります。

■参考にさせて頂いたサイト
http://d.hatena.ne.jp/koyamartian/20110309/1299628777

純正のSFPを使わない場合は
(config)#no errdisable detect cause gbic-invalid
(config)#service unsupported-transceiver 
ってコマンドが物によって必要みたいです。

Aristaだとこのコマンド隠しコマンドになっていて
引数にライセンスネームとなんか入れないとダメみたい。
arista(config)#service unsupported-transceiver ?
  WORD  Licensee name

arista(config)#service unsupported-transceiver FINISAR ?
  8-digit hex number  Key to authorize unsupported transceivers

■終わり
ホワイトボックススイッチの時代になっていく傾向が見えるので今更感もありますが
まだまだCiscoやBrocade等のベンダー製品も沢山使われているので
SFPだけでも3d-partyの安い物で運用したいと思って試しました。
ただ保守が受けられるのか等はベンダーさんと調整が必要だと思います。

私の体験が誰かの生産性向上に役立っていただけることを祈って