socksサーバーをConohaのVPSにインストールする その2 2015年11月27日

google-mini-server-porn_22aug2008_7324

さてsocksサーバー構築の続きです。

しかしまた、socks5のセットアップ情報も日本語では少ない。当然使ってる人が少ないからだろう。とりあえずsocks5のサーバーとしてはdanteというパッケージが有名らしく、それを入れることにする。

Dante – A free SOCKS server
↑ Danteの本家サイト

通常CentOS6でバイナリをインストールする際に使うyumにもdanteは用意されていない。調べてみるとrpmでならバイナリが用意されているようでrpmforgeというrpmのレポジトリをyumに追加してそこからインストール。

[root@localhost ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[root@localhost ~]# rpm -ivh rpmforge-release-*.rpm
[root@localhost ~]# yum -y update

% vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 6 – dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever – RPMforge.net – dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

yum -enablerepo=rpmforge info dante*
yum -enablerepo=rpmforge install dante*

これでとりあえずdanteのパッケージはインストール完了。

あとは設定ですが、設定ファイルの構成はシンプル。基本的には/etcの下のsockd.conf と socks.confの2つのファイルをviなどで編集するだけ。さらに今回みたいにインターネット上にサーバーを配置するならユーザー認証で認証されないと接続できないようにすると思うが、基本的にsquidのbasic認証のようにユーザー名とパスワードをsocks用に別途用意するのではなく、ホストに登録されているユーザー名とパスワードを利用するのでsocksを利用するユーザーを新たに用意して、ログインシェルをnullか/sbin/nologinを割り当てておく。

基本的にsocks.confでは

route {
from: 0.0.0.0/0 to: 0.0.0.0/0 via: direct
proxyprotocol: socks_v5 # server supports socks v5.
}

このように from: x.x.x.x/x to: x.x.x.x/x でACL指定(このサーバーはインターネット上にあり、アクセス元もGlobal IPがDHCPで変更されるので特に制限はしない記述)とサーバーでサポートするプロトコルの指定。基本的にこれだけで記載した。

sockd.confは

logoutput: /var/log/sockd.log

ログの出力をファイルに指定して、

internal: x.x.x.x port = 1080
external: x.x.x.x

でPCから接続を受け付けるIP→internal、socksサーバーから出て行く通信の送信元IPアドレス→ externalで指定する。今回はinternal = external というように同じIPになった。仮想IPを割り振ってサーバーを運用してる場合でもこのinternalとexternalに同じようにどんどん併記していけばちゃんと1のアドレスから入った通信は1から出ていき、2のアドレスから入った通信は2から出て行くように動作していた。

# methods for socks-rules.
socksmethod: username none #rfc931

# methods for client-rules.
clientmethod: none

ここに後述する詳細ポリシー設定の際に使用するアクセス方法を記載しておく。ここに書いていないと後のポリシーの記述内で指定しても有効化されない。ちなみにclientmethodの記載はPCからsocksサーバまでの通信、socksmethodに関してはsocksサーバーから外部の宛先までの通信に適用される。

user.privileged: root
user.unprivileged: nobody

これらはsocksのサービスが稼働する際のユーザー権限の設定。でいいはず。

client pass {
from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
log: connect disconnect error
}

socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
user: AAAA
log: connect disconnect error
}

後はこれらのポリシーの設定をしてあげる。先も言ったようにclient passがPCからsocksサーバーまでの通信のポリシー、socks passがsocksサーバーからアクセス先サーバーまでの通信のポリシーとなる。上記ではclient passではすべてのアドレスからすべてのアドレスへすべてのポート番号で許可して、通信のログをちゃんとファイルに出力しますという指定だけしている。

socks passも同じく通信の制限はほとんど課さず。サポートするプロトコルをtcp、udpと指定して同じくログ出力の記述。登録されたユーザーだけが使えるようにsocks pass内にmethod: username を追記して終わりかと思ってたが、なんでかうまく動作しない。数時間トライしたが、最終的にmethod: usernameではなく、user: <ユーザー名> というふうに記載したらとりあえずユーザー認証が正常に動作してくれた。

ffftpでsocksの指定をしてユーザー名、パスワードを設定してちゃんとftpサーバーに接続出来た。socksサーバーのユーザー名、パスワードを削除して接続しようとしても接続失敗するのも確認してとりあえず設定完了。

多分こんな感じでいいはずだ。。。

で、結局テストのみで最終的に使うことなく終わる。勉強する機会を与えて頂いてありがとうございました。。。これがなければ触る機会はなかったな。。。

以下参考にさせてもらいました。

danteでSocks Proxy — command not found:
SOCKSサーバ Dante インストール – moremagicの日記
↑ インストールに関して。日本語サイト。

sockd.conf(5): Dante server config file syntax – Linux man page
↑ 英語サイトだけどconfファイルのオプションの説明詳細が豊富。本家サイトのドキュメントより役に立つ。

socksサーバーをConohaのVPSにインストールする その1 2015年11月26日

server room

今月は自分でやってるVPN・プロキシ関連でインターネット経由での問い合わせがバンバン来た月だった。その中でとある方からのリクエストでクラウドのサーバーにsocks5のプロキシを立てれないか?というご要望。

「socks5?socks5?。。。そういえばブラウザのプロキシ設定の中でそのような言葉を見かけたような。。。」

SOCKS – Wikipedia

そう、個人的な記憶ではWindows / Internet Explorerのプロキシ設定や古くはNetscape、今はMozilla Firefoxなどのブラウザのプロキシ設定の項目で90年代からsocksはすでにあったように思う。20年弱インターネットに触れてきて始めてsocks5の単語を人が話しているのを聞いた(見た)。「こんなもの、誰が使ってんだ??」と思ってたがやっぱり少なからず使ってる人は居るのね。

で、ものの試しにセットアップ。Conohaというこれまた格安でVPSのインスタンスを貸し出してくれるサービスで手馴れているCentOS6.6のVPSを1つ借りてセットアップスタート。

ConoHa

しかし問題は、socks5、自分は今まで使ったことがないだけでなく、全く使い方がわからない、一般的にもどう使われてるのかわからない、という問題が。つまりどのような機能が実現されればOKなのかすら分からなかった。。。

んで、それもまたいろいろ調べて行ったらどうもsquidのようにHTTP/HTTPSのみではなくいろんなプロトコルをこのサーバーが中継してくれる。

[ PC ] <- 1 -> [ SOCKS ] <- 2 -> [ アクセス先サーバー ]

このように1と2の通信は別セッションになってて1はPCとSOCKSサーバー間、2はSOCKSサーバーとアクセス先サーバーの通信となってるところを見ると動作はsquidみたいな感じだが、役割的にはこのSOCKSサーバーを企業LANとインターネットの境界においてFirewallのような役割を持たせるようだ。昔の「アプリケーションゲートウェイ型のFirewall」のイメージか?SOCKS自体は中継のプロトコルとして定義されていてレイヤー5で動作するみたい。通信を行うクライアントのプログラムはSOCKSのプロトコルを実装している必要があるとのこと。

ファイアウォール(パケットフィルタリングとアプリケーションゲートウェイ)、DMZの仕組みや特徴について

んで調べてみるとどうやらWindowsのFTPクライアントであるffftpはFirewall経由でのFTPをサポートしていてそのFirewallにsocks5サーバーを指定できる。なのでとりあえずffftpでこのsocks5サーバーを経由して問題なくFTPでputやgetができればとりあえず動作確認完了ということにしてセットアップを試みるのであります。

長くなったんで ~その2~ へ続く。

Apple Music が Androidにも来た。iTunes Matchはいずこ? 2015年11月09日

Screenshot_20151111-075040-2

表題の日付と若干異なりますが2015年11月11日、AndroidのGoogle Play StoreからApple Musicがダウンロード可能になった。以前からAndroidにも対応と言われていたが、ちょうど忘れかかってた頃にリリース。

Music – Apple(日本)
Apple Music – Android Apps on Google Play

とりあえずインストールしてみるとBEATS1というAppleのストリーミングラジオは聞ける。だけど個人的にはApple Musicはおっさん臭くてどうにも使う気にならんのでPCやMacのiTunesのライブラリに入ってる曲をクラウドにあげて
ストリーミングで回線さえあればどのデバイスからでもライブラリ曲の全体にアクセスできる、iTunes MatchをぜひAndroidで使いたかった。iPhoneで出かける前にMacやPCと音楽データを同期、みたいなことはiTunes Matchが始まって以降まったくやらなくなった。少なくとも3G回線があればiPhoneからは自分の持ってるmp3やAACの音楽ファイルをどれでも聞くことが出来たからだ。

が、当然のことながらAndroidにはAppleのクラウドサービスと乗り入れ出来る機能などないのでこの点はAndroidに移行して退化した点だった。Google(Android)はGoogle Play Musicというほぼ同じサービスを用意してるが、約22,000曲データ量で129GBあるデータを移行するのもめんどくさく、Android乗り換え以降はずっとRdioという聞き放題サービスでばかり音楽を聞いていた。

んで、やっとNexus6で自分の音楽ライブラリが聞けると思ってインストールしたんだが、有料プランか試用プランでログインを行わないとどうにもAndroidアプリからはBEATS1ラジオしか聴けない。。。Apple Musicアプリだから
iTunes Match機能には対応してない??でもApple Music自体にもライブラリをクラウド同期するiTunes Matchとほぼ同等の機能があるからiTunes Match機能だけでも動いてはくれないか?と淡い希望でこちょこちょ弄くってましたが、最終的にこれを見つけました。

Apple Musicに加入したらiTunes Matchの扱いはどうなる? | IT Strike

こちらの中ほどの各サービスの違いをまとめた表の中でiTunes MatchのAndroid対応は X となっている。。。ということはAndroidで自分のライブラリをストリーミングで聞くにはApple Music契約必須か。。。Androidで聞くには
追加で費用が要りますよと、そういうことですな。

iTunes Matchの便利さにはかなり浸かりきっていたので、とりあえずApple Musicを1ヶ月だけ有効にしました(Subscriptionを申し込んだが自動更新をすぐにオフにした)。そしたらちゃんとクラウドのライブラリの曲の一覧をすぐにダウンロードしてきてちゃんと再生することができました。

とりあえずAndroidでどんな感じか見てみたいと思います。しかしBETA版と明記されてるからか、若干動作不安定な気がします。。。

SquintでSquidサーバーのログ解析 2015年10月18日

My work desk

先週末はまたまたさくらのVPSサーバーにSquidのインストール。そのサーバーはログ解析の必要があるのでなんらかSquidのアクセスログを見れる解析ツールが必要になった。

squid : Webコンテンツの配信を最適化する

アクセス解析に関してもレポート形式は様々なんで、結構求める結果を表示してくれるレポートがない。上のリンクのサイトを見ながらいくつか試しに入れてみたりしてたが、最終的に中ほどにあるSquintというツールに決定。

Leading Edge Business Solutions – Squint

このSquintはセットアップがとても楽。基本的にPerlなどLinuxのどのディストリビューションにでも標準的に入ってるライブラリだけでSquidログの解析レポートを作成してくれる。

apache(httpd)に関してもhtmlフォーマットのレポートを見る時に必要なだけでレポート作成まではhttpdのサーバーがなくても何も問題なく動きます。InternetからReachableのサーバーで常時TCP/80を開けておくのが不安、もしくはセキュリティ対策が面倒というのなら、とりあえずSquintで作成したレポートは特定のフォルダに溜め込んでおき、安全にhttpdを立ち上げられるLinuxなどのサーバーからshスクリプト+cronなんかで自動的にscpでそのレポートファイルをコピーして見れるようにしておけばこのレポートのためだけにhttpdを立てる必要もなくなります。

コマンドラインでも簡単にレポート作成できるし、配布パッケージのINSTALLファイルにある手順に従ってインストールすればcrontabへの登録も自動的に行い、デイリーでレポートを作成を自動的に作成してくれる。手順も3,4のインストールスクリプトを実行するだけで終了。とかくめちゃ簡単。

untitled-3

レポート自体は古臭いtableタグを使用した色気のないレポートですが、弄れる人はCSSを弄って見た目はもうちょっとマシにできるんじゃないかな?

月千円のWindows ServerのクラウドサービスをWindows PC代わりに使おうか 2015年01月12日

Crash 1 - Windows PC

自宅のWindows PCを排して自宅にはMacしか置かず、もしWindowsでの作業がなんらか必要になったら(今のところ仕事ではMS VISIO作業のみ、プライベートではなし)クラウド上のWindowsマシンをPC代わりにRemote Desktopで利用すればいいかも?とアメリカのWindows Serverマシンをクラウドで貸し出してくれるサービスを眺めていて思った。

Windows VPS, Linux VPS, VPS Hosting, Cloud VPS, Forex VPS, Cheap VPS – VPS Mart

ここのExpress Windows VPSのコースなら

2GB RAM
50GB HDD
1Core CPU
10MB Unmetered Bandwidth
Windows 2012 R2

で月9.99USD。これはかなりお安い。月千円ぐらいならWindows PCを手放してクラウドのWindowsでやっていってもいいんじゃないか?と思って早速Paypal支払いで登録してVPSのインスタンスをひとつ立ち上げてもらいました。

が。。。

かなり動作がもたつく。当初12月半ばに日本に居た時に思い立ってサービス契約してみて日本のネットワーク環境でももたつくし、タイに戻ってきて使ってみてももたつく。当然ながら写真のレタッチソフトや動画編集ソフトみたいな高画質、ハイパフォーマンスが求められる作業はやっていないが、VISIOの編集みたいな一般のドキュメント編集も画面の更新がもたついてイライラが募るレベル。

上記のスペックぐらいじゃ今どきのWindows Serverは厳しいのかねえと思いながら何がボトルネックになっているのか見極める前に年末年始にBitcoinマイニングで改めて引っ張り出してきた使ってないPCのスペックの良さ(LGA1155のCore i5、RAM 16GB)を見て「あ、これ暗号通貨マイニングがひとしきり終わったらWindows入れて使おう」と思ってしまった。なので使い勝手よくないVPSのWindowsサーバーは結局1ヶ月立たずに解約、さようなら。さらに通常のPCのWindows OSならフリーのウィルス対策ソフトもいくつかあってわざわざお金かけなくていいが、Windows Serverになるとそれらのフリーのものも対応していないので改めてウィルス対策ソフトのライセンスも用意しなくてはならないのもネックでした。

しかし今から考えれば上記のスペックでVISIOすら画面が追いつかないってのはマシンスペックだけじゃないような気もするな。ネットワークにも原因がある気もするがもう諦めてしまったので再度チェックする気にもならず。。。しばらくはまだWindowsマシンはローカルのものを使います。