2016年11月27日日曜日

ssh-agentのシェア

今日はssh-agentを複数ウィンドウでシェアする方法の説明です。

以前必要があって調べた時はすぐ出てきたんですが、chromebookの設定で再度調べたら全然欲しい情報がヒットしなかったので、まとめときます。

ssh-agentは、sshでログインする時のパス入力を自動化する仕組みです。詳細はググッてください。

ssh-keygenしてssh-copy-idしたら、後は.profileや.bash_profileに以下を書きます。

if [ -f ~/.ssh-agent ]; then
    . ~/.ssh-agent
fi
if [ -z "$SSH_AGENT_PID" ] || ! kill -0 $SSH_AGENT_PID; then
    ssh-agent > ~/.ssh-agent
    . ~/.ssh-agent
fi

これでssh-agentを一つだけ起動して、全てのウィンドウでそれをシェアします。毎回、ssh-addしなくて良くなるわけです。ログインしたら最初に一度だけssh-addしてください。後はそのパスフレーズを全てのウィンドウでシェアします。

最初のifで.ssh-agentファイルがあれば、そこに環境変数が書いてあるはずなのでロード。次のifで環境変数に問題があったり、設定されているプロセスが存在しなければ、ssh-agentの再起動をしています。

ssh-addなどで調べずkillで調べているのは、cygwinでうまく動作しなくなるからです。

利用する全てのマシンの.ssh/configには以下を書いておきましょう。

Host *
    ForwardAgent yes

リモートのリモートにも自動でログインできるようになります。

続けて、screen用の設定です。以下はsshで入ったリモートでscreenを動かして、その中から更にsshする人用の設定です。screenを使わないなら必要ありません。

sshしてscreenした直後は調子いいのに、一度detachするとssh-agentが効かなくなる問題への対策が、以下になります。

まず、.screenrcに以下を追加します。

setenv SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock

そして、 ~/bin/screenとして以下のスクリプトを用意。

#!/bin/sh

# Fix SSH auth socket location so agent forwarding works with screen.
case .$SSH_AUTH_SOCK in
.$HOME/.ssh/ssh_auth_sock)
  # Called inside of screen, so nothing to do here
  ;;
*)
  if test "$SSH_AUTH_SOCK"; then
    ln -sf $SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
  fi;;
esac

# Execute screen
exec /usr/bin/screen "$@"

sshしてscreenした時の問題の原因は、sshする度に、SSH_AUTH_SOCKで接続すべき接続先が変わるのに、screen内の環境は変化しないことにあります。

ここでは、SSH_AUTO_SOCKをシンボリックリンクファイルに置き換えて、screenの度にシンボリックリンクを更新することで対策しています。

Happy hacking! :-)

2016年11月15日火曜日

Chromebook flip c100paとchromebrew

前から欲しかったchromebook購入しました。




ひゃっほい。悪くないキーボード、9時間くらいもつ電池、コンパイルもバリバリできる速度、タッチスクリーン、これが3万ちょいで買えます。

感想は10万とかするPCより便利じゃないかなこれ。いつでも手軽にサスペンドでき、サスペンドからの復帰も数秒なので、タブレット感覚で使えます。というかこれ買ってからタブレット触る回数減った。

この上でちょっとした開発をしたいと思っていたのですが、armチップセットなのでchromebrewという簡単開発環境が使えません。

なので、無理やり作りました。Chromebrew for ARMで公開してるので興味あればご利用ください。

EDIT: その後本家にマージされてます。

2016年11月6日日曜日

EdgeRouter Xとオフロード

オフロードといっても自転車やバイクのそれでなく、ハードウェアオフロードの話です。

先日購入したEdgeRouter Xは、ハードウェアオフロードという機能がついてます。

この機能は最近のファームウェア更新で利用できるようになっています。デフォルトではオフです。オフの時の数字がこう。



これをオンにすると、



やったあああああ(/・ω・)/

設定は、Config Treeから行います。system→offloadで出てくるhwnatの欄に、enableと入れて有効にします。



下のpreviewを押すと実際に使うコマンドが表示されるので、applyします。



ハードウェアオフロードはハードウェアに細々とした仕事を任す機能です。なので、複雑なルール設定などをしていると問題が発生するかもしれません。この設定をして調子が悪くなったら、元に戻してください。

2016年11月4日金曜日

EdgeRouter Xで広告ブロック

さて、新しく使い始めたEdgeRouter Xですが、やはり広告が邪魔というわけで、真っ先にその対策です。

個人的には広告は必要悪と思っています。ですが、物事には限度があるわけで、動く広告や、読んでる記事の上に浮かぶ広告があると、抹消したくなるのが人間の自然な反応という奴でしょう。

こんな奴ですね。

EdgeRouter Xでは以下がout of the boxで利用可能です。

  • ホスト名ベースのブロック
  • IPアドレスベースのブロック

ホスト名ベースのブロックのやり方は以下の通り。標準で動いているdnsmasqが、

/etc/dnsmasq.d/dnsmasq.adlist.conf

というファイルを読むため、そこに、

address=/ホスト名1/0.0.0.0
address=/ホスト名2/0.0.0.0
address=/ホスト名3/0.0.0.0

とひたすら書き連ねます。そうすると、家庭内からはそれらのホストへアクセスできない、つまりそれらのホストが提供している広告が見れなくなります。

上記ファイルを書くにはsudoが必要です。EdgeRouter X上の環境は全部簡易環境なので、作業はローカルでファイルを用意して、それをscpした後、ログインしてsudo cpするのが楽ちんです。書き終えたら、

$ sudo /etc/init.d/dnsmasq force-reload

として更新した設定を読み込ませます。ホスト名ベースのブロックは以上。


次は、IPアドレスベースのブロックです。まず、Firewallに外向きのルールを追加します。ここはGUIから操作できます。Firewall/NATから、Firewall Policiesで、Add Rulesetで外向きを追加します。デフォルト動作はacceptにして、条件にマッチした物だけをrejectします。



このrulesetの中に、Add New RuleでrejectするIPアドレスを登録します。今回はhttpの広告がターゲットなので、「TCPで、ポートが80で、特定のIPアドレス(/24などとしてネットワークも指定できます)をrejectする」としています。



購入しただけで、何も追加しなくても、広告がブロックできるEdgeRouter X、マジ有能(/・ω・)/

2016年11月3日木曜日

EdgeRouter Xの購入

お久しぶりです。久々の更新です。

先日yabeさんのtwitterでの紹介を見てから、ずっと気になっていたEdgeRouter Xを購入しました。

これまで、OpenWrtを使ってました。機能は豊富で色々設定できて、広告ブロックも出来てて、快適に使ってたんですが……、全部ソフトなので遅いなと。eo光で1G家庭用接続でこのくらいでした。



そう思っていたところ、yabeさんがtwitterでEdgeRouter Xを呟いてるのを見て、ずっと欲しいなあと思ってました。

性能もハードウェアオフロードを使ってて、直結ならNATしながら900Mbps出るよとか、欲しくなるでしょう、コレ。
  • HW_NAT can offload NAT for IPoE/PPPoE, TCP/UDP checksums, TSO, GRO, VLAN (tagging and checksum) and even Hardware QoS but no DPI.
  • Test 4 : Laptop 1 ---(NAT)ER-X--- Laptop 2; NAT, offload disabled 385 Mbits/sec
  • Test 5 : Laptop 1 ---(NAT)ER-X--- Laptop 2; NAT, offload enabled 935 Mbits/sec

北米では$50くらいなんですが、日本で小売りしている所になると1万を超えます。特に、yabeさんの紹介が火をつけたのか、その時は1万5000円を超えていました。それでもずっとチェックしていたところ、1万で販売している小売りを見つけ、遂にポチったわけです。



やったあああああ(/・ω・)/