conohaのVPS、ネットワークの速度制限がかけられた 2016年01月04日

Excellent Cable Management

プロキシのレンタルサーバーサービスで一部conohaのVPSサーバーを使ってるのですが、つい先日ネットワークの速度制限がかけられたことがあった。

サーバーを使用しているユーザーさんから問い合わせがあり、サーバーのレスポンスが異常に遅いとのこと。調べてみるも特に手がかりになりそうなエラーログなどは何も出ていない。

いろいろsquidのパラメーターやネットワーク設定のパラメーターをいじってテストしてみるが何も変化なく、最悪rootが乗っ取られてエラーログやシステムに侵入された際のログすら不可視にされてるかもしれないという考えから、一旦サーバーを初期化し、セットアップ時と同じステップでサーバーの再構築を行ったりもした。サーバーの再構築には時間がかかったからか、作業後はネットワークの速度は元に戻っていた。腑に落ちないままユーザーさんに報告。

しかし、このような状態がさらに2回も発生。あまりに動作がおかしいのでconohaのユーザーサポートに

「ネットワークの速度制限やサーバーのリソース使用制限が設定されてませんか?」

と問い合わせたところ

「ネットワーク速度制限がかかっておりました」

とのこと。急ぎその制限は外してもらう。速度制限の原因は該当サーバーからのトラフィック量がトリガーになっているとのこと。

cpu

んでこれがここ一ヶ月ぐらいのトラフィックのグラフ。ちょうど3回大きな落ち込みがあってこれが速度制限をかけられたところ。ネットワーク速度的には1500KB/s ~ 2000KB/sぐらい。KBという表記だからbitではなくbyteか?となると

1500KB/s > 12Mb/s
2000KB/s > 16Mb/s

conohaのネットワークは

物理ネットワークは10Gbps共有
VPSのインターネット側へのネットワーク帯域は100Mbps共有

となっているらしい。まあ、ちょっと通信量多いかと言えば多いかもしれないけどサーバーだったらこれぐらいトラフィック食うサーバーざらにあると思う。イマイチこの通信量で制限にひっかかるというのが腑に落ちない。さらに返答として

「ご連絡を頂いているので現在お客様のほうで ご契約頂いているサーバーおよびこれから新規に開設頂くサーバーは速度制限の対象から外してありますのでご安心ください。ただし、あまりに通信量が多くて他のユーザー様のサーバー、ネットワークの使用に影響が出る場合は再度制限される可能性がありますのでご注意ください」

とのこと。具体的な数値的指標は出てこない。

というか、連絡したからこれ以降は現状のサーバーには制限をかけない、ということはこの通信量では問題ない、ということを暗に証明してるんじゃない?余計になぜ速度制限をかけられたか不思議でならない。許可制??ネットワーク好きなように使いたいなら許可制??それなら最初の申し込み時に申請フォーム用意しておいてちゃんと連絡できるようにしといてほしいな。問題出て速度制限かけてから申請って、サーバーの用途によってはこの速度制限で大きなコストの損害が出る可能性も大だから。。。

なんか結局よくわからずですが、データセンター側の手違いで他のサーバーの速度制限設定に間違えて入れられてたんじゃないかと勘ぐっております。そんなこと問い合わせても「そんなことはない」としか言われないでしょうけど。。

とりあえずconohaのVPS使ってて原因不明のレスポンス遅延などが発生した場合はとにもかくにもデータセンター側の制限の確認をしたほうがよいと思います。

Happy New Year ~2016~ 2016年01月01日

IMG_20151219_230913

明けましておめでとうございます。2016年になりました。

去年は12月25日に退職し、その後すぐにビザ取りにムクダハンーサワンナケートまで向かい、帰ってきてからはインターネット経由でVPSサーバーのセットアップ依頼を数台分こなして年末を迎えるという、ぜんぜん暇ではなくバタバタしていて何がクリスマスだ、何が年末だって感じでした。

なんか退職した瞬間から頭の中が切り替わった感じで、途端に仕事してないのが不安になってずっとネット経由でもらった依頼の仕事や、これから先の準備、過去のものの整理などを行っております。自分で自由に仕事が出来るように、と考えてたんですが暇どころか忙しくしてないと不安という本末転倒な感じです。まあそれもしばらくしたら落ち着くとは思いますが。

そんななか、面白いのはStar Warsの7作目、Force Awaken。ムクダハンで一回目を観て、バンコクに戻ってきてまた昨日彼女と一緒に家の近くのセントラルラマ3で見て、さらに今日はまたIMAXで見たくなってまたまたネットでチケットブッキングして22:50からの上映を見に行ってきます。それほど自分的に「傑作だ!」と声高に言いたいわけではないですが、何回も見たくなる不思議。。。まさに自分の中でStar Wars熱の覚醒が。。。

まあ仕事もエンタテイメントも例年にない風変わりな年明けを体験しております。またみなさま今年もよろしくお願い致します。

スター・ウォーズ プリクエル・トリロジー DVD-BOX<3枚組> (初回生産限定)” style=”border: none;” /></a></div>
<div class=
20世紀フォックス・ホーム・エンターテイメント・ジャパン (2013-11-22)
売り上げランキング: 44
スター・ウォーズ オリジナル・トリロジー DVD-BOX<3枚組> (初回生産限定)” style=”border: none;” /></a></div>
<div class=
20世紀フォックス・ホーム・エンターテイメント・ジャパン (2013-11-22)
売り上げランキング: 45

↑ 結局、これらも買い直しで今まで無視してた1~3も改めて観てみます。タイで買ったので当然日本語字幕なし。でも中国語や韓国語はあるのになんで??

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~ へ続く。

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を弄って見た目はもうちょっとマシにできるんじゃないかな?