ふたごパパのサーバ構築日記

コンピュータ関連のことを、出来る時に、出来ることだけ。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
入居してからずっと気になっていたんですが、情報分電盤(情報ボックス/情報配電盤)の配置がどうも不便というか、有効活用できていない。

MDFからのLANケーブルがクローゼット内の情報分電盤に引き込まれて、スイッチングハブに接続、そこから宅内配線で各部屋に繋がっています。
図にすると以下の通り。
改善前

光回線でインターネットと光電話を使っていると、ホームゲートウェイルータを電話機の近くに置く必要があるので、電話機のあるリビングにルータを配置することになります。そうすると他の部屋へは有線でのインターネット接続ができなくなってしまいます。

別に有線LANで繋ぎたい訳でもないので良いんですが、無駄なのも嫌なのでちょっと改善することにしました。

要するに情報分電盤にルータを置いて、そこから各部屋に繋げれば良いはず。ただその場合ネックになるのは電話で、情報分電盤においたルータからリビングの電話までどうやって線を引くか?
大した距離でもないので長めのモジュラーケーブルを配線する手もありますが、床や天井を線が這うのは見た目がよくない。一応無線の機器もあるみたいですが、安くても1万円越えだしあんまり一般的ではないみたい。
http://tesscom.shop-pro.jp/?pid=33862435

それで先延ばしにしてたんですが、目からウロコ。宅内配線(8線)の壁用ジャック(RJ45)には、電話線のRJ11プラグをそのまま繋げれるんですね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1465956324

これでネックは無くなりました。

①MDFからのLANケーブルをスイッチングハブから抜いて、ホームゲートウェイルータのWANポートに接続
②ホームゲートウェイルータのLANポートとスイッチングハブをLANケーブルで接続
③ホームゲートウェイルータのLANポートと無線LANルータをLANケーブルで接続し、無線LANルータは壁に設置
④ホームゲートウェイルータのLANポートとリビングへの宅内配線を延長コネクタで接続して、リビングの壁用ジャックから電話機までをモジュラーケーブルで接続
情報分電盤

無線LANルータ

図にするとこんな感じ。
改善後

これでリビング以外の部屋の宅内配線も有効活用できます。まだ何も繋げてないですけど…気分はスッキリです。

それにしても、イマイチな分電盤の配置に感じるけど、他の住人はどうしてるのかな?こんなのに気にする方が特殊なのか。それとも他に良い方法があってそれが常識なのか。分かる人教えてほしいです。



前回でLAN内から接続できたので、インターネットから接続できるようにします。

インターネット接続環境は以下のとおり。
・回線
 NTT東日本 フレッツ光ネクスト
・プロバイダ
 インターリンク ZOOT NEXT for フレッツ光
・ルータ
 RT-S300NE(NTTのレンタル品)
※詳細な設定方法は「RT-S300NE機能詳細ガイド」をダウンロードし参照しました。

1.ルータ設定
RT-S300NEの設定方法はメーカー固有のものだと思うので、概要だけ。

「ZOOT NEXT for フレッツ光」は固定IPを割り当てられるサービスなので、既にルータには固定IPが振られている状態です。

固定IPマスカレード機能を使用し、固定IPの22番ポートへのアクセスを、sshサーバのIPアドレスの22番ポートに送信されるよう設定します。あわせてフィルタリング設定で、同様の通信を許可します。
※「機能詳細ガイド」の「設定例」→「外部にサーバを公開するには」に則って設定しました。


2.接続テスト
Android端末のWiFiをOFFにしてモバイルネットワークからインターネットに接続できる状態にし、LAN内と同様、固定IP:22番ポートに向けて、公開鍵認証で接続したところ・・・無事接続できました。
固定IPさえ持っていれば、特に難しいことはなさそうです。
sshクライアントは前回からいくつか試してみて、「VX ConnectBot」というツールが使いやすかったのでそれを使ってます。


3.iptables設定
とりあえずAndroid端末からの接続はできましたが、サーバを立てた状態で半日も放っておいたら、/var/log/secureに以下のログが100件弱記録されました。
「Received disconnect from xxx.xxx.xxx.xxx: 11: Bye Bye」
xxxの部分は接続元IPアドレスで、接続元は中国、インド、アメリカなど。どうやらログインを試みて失敗している様子。

公開鍵認証なので鍵ファイルが流出しない限りログインは出来ないと思いますが、念のためある程度は絞っておきたいところ。

今回はスマートフォンからの接続のみに絞ることにします。

現在のキャリアはソフトバンクなので、技術情報からスマートフォンの接続元IPアドレス範囲を確認。

126.163.0.0/16
126.192.0.0/16
126.193.0.0/16

上記IPアドレスからのssh接続を許可するように、iptablesに設定します。
# vi /etc/sysconfig/iptables

以下の記述を削除
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT ①

以下の記述を追加
-A INPUT -s 192.168.x.x/24 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ②
-A INPUT -s 126.163.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③
-A INPUT -s 126.192.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③
-A INPUT -s 126.193.0.0/16 -p tcp --dport 22 -m state --state NEW -j ACCEPT  ③


それぞれの意味は以下のとおり。
①tcp22番ポート宛の新規の接続を許可(IPの指定は無しなので何処からでも接続可能)
 コレは削除します。
②LAN用の設定。送信元IP(192.168.x.x=ローカルIP)からのtcp22番ポート宛の
 新規接続を許可。
③スマートフォン用の設定。事前に調べた送信元IPからのtcp22番ポート宛の
 新規接続を許可。

上記設定を入れてから1日確認しましたが、怪しい接続は無くなりました。


これで外出先からでもスマホを使ってサーバにログインできるようになりました♪

本来はフィルタリングはルータでやったほうが、より入り口に近いので望ましいんでしょうね。ただ高機能なルータでもないですし、サーバ側でフィルタリングすると、出先のPCから接続したいときとかに、スマホでちょいとiptablesの設定追加してあげれば接続できるようになるので、結構便利かなとも思ってます。

とりあえず以上、またスマホと連携していろいろやってみたいです。
久々に更新

ふと、外出先のAndroid端末から自宅サーバを操作してみたい!と思いまして、試してみます。

AndroidのベースはLinuxなので、sshクライアントがあってネットワークが繋がっていれば、なにも特別なことは必要ないはずです。インターネットに公開することになるので、セキュリティにちょっと気を付けるくらい。

環境は以下のとおり
・sshサーバ
 CentOS6/Openssh5.3
・端末
DELL Streak SoftBank 001DL
・回線キャリア
 SoftBank
・Android2.2

1.サーバの設定
(1)sshdの設定
Opensshは大抵インストールされていると思うので、とりあえず設定から。
さすがにパスワードだと不安なので、公開鍵認証で接続するようにします。また、使わない機能はすべてOFFにします。
項目の詳細は以下のURLを参照しました。
SSHD_CONFIG (5)

vi /etc/ssh/sshd_config
・PubkeyAuthentication yes
→公開鍵認証を有効(デフォルトはコメントアウト)
・HostbasedAuthentication no
→ホストベース認証は無効(デフォルトはコメントアウト)
・PasswordAuthentication no
→パスワード認証は無効(デフォルトはyes)
・PermitRootLogin no
→rootでのログインは無効(デフォルトはコメントアウト)
・AcceptEnv ...
→クライアントから送られる環境変数のうち、使用するものを指定する・・らしいですが、Androidから接続する際に意味があるとは思えないので、すべてコメントアウトしました。
・X11Forwarding no
→リモートからsshを使用してのGUIアプリの使用は無効(デフォルトはyes)
・#Subsystem sftp /usr/libexec/openssh/sftp-server
→sftpは使うかどうか分からないので、とりあえずコメントアウトしました。

設定が終わったら、sshdを再起動します。
/etc/init.d/sshd restart


(2)rootにsuできるユーザの制限
公開鍵認証で接続したユーザ以外、rootユーザにsuできないようにします。
vi /etc/pam.d/su
以下の行のコメントアウトを外す
#auth required pam_wheel.so use_uid

usermod -G wheel <ユーザ名>
rootにsuできるユーザをwheelグループに追加

(3)sshdを再起動
再起動して設定を反映します。
/etc/init.d/sshd restart


(4)鍵ペアの作成
公開鍵認証で使用する鍵ペアを作成します。
ログインしたいユーザで作業します。

こちらを参照しました。

$ ssh-keygen -t rsa
パスフレーズを入力
$HOME/.ssh/に秘密鍵id_rsaと公開鍵id_rsa.pubの鍵ペアが作成される

$ cd $HOME/.ssh/
$ cat id_rsa.pub >> authorized_keys
autorized_keysファイルを作成

$ chmod 600 authorized_keys
パーミッションを変更

2.クライアントの設定
(1)sshクライアントのインストール
Marketから「Telnet 1.2.0」をダウンロードしてインストールしました。
他にも使いやすいソフトはあるかもしれませんが、とりあえずシンプルそう
なソフトにしました。

(2)公開鍵の準備
1.(4)で作成した秘密鍵id_rsaをAndroid端末に転送します。
 方法はなんでも良いですが、僕は一旦WindowsマシンにWinSCPで転送したあと、
 WifiでLANに接続したAndroid端末に、Windowsファイル共有で移動させました。


3.接続
まずはLAN内から接続できるかテスト。
「Telnet」でポートをsshに指定、秘密鍵ファイルを使って接続したところ、
問題なく接続できました。

あとはインターネットからつなげることが出来れば完成です。
それはまた次回♪
metaさんより、CVSではなくgitからソースを取得すれば、ソースコードの書き換えが不要とのコメントをいただきましたので、早速(といっても半月経ちましたが・・・)試してみます。

あと、OSインストール時の情報と必要なパッケージについて、前回より詳しく書きます。

(1)OSのインストール
CentOS5.5をインストールします。
構成は以下のとおり。VMWareServer2.0上の仮想マシンにインストールしました。
記述している箇所以外はデフォルトです。

HDD:8GB
パーティション:
 (デフォルト構成)
 /boot 101MB /dev/sda1
 /VolGroup00 8887MB /dev/sda2
 / 7040MB LogVol00
 /swap 1024MB LogVol01

UTC:使用しない

パッケージ:カスタマイズ
 デスクトップ環境
 GNOME デスクトップ環境 →チェックをはずす
 KDE ( K デスクトップ環境) →チェックをつける
 その他は変更なし

xrdpのスクリプト等を見ていると、デスクトップ環境はGNOMEではなくKDEを想定しているように見えるので、KDEにしました。

参考までにキックスタートファイルをアップしておきます。


(2)gitの導入
以下のサイトを参照させていただきました。

irusu::備忘録 - さくらのVPS 980にyumでgitをインストール

・rpmforgeのyumリポジトリを使用してgitをインストール
※wgetでダウンロードするパッケージは環境に合わせて変更。事前にhttp://packages.sw.be/rpmforge-release/で確認。
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rm rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo
yum -y --enablerepo=rpmforge install git


(2)ソースコードの入手
ここに記述されている通りに、xrdpのソースコードを取得します。

git clone git://xrdp.git.sourceforge.net/gitroot/xrdp/xrdp


(3)必須パッケージの導入
bootstrapとconfigureを実行した際に、必要と通知されるパッケージをインストールします。
yum -y install autoconf
yum -y install automake
yum -y install libtool
yum -y install gcc
yum -y install openssl-devel
yum -y install pam-devel
yum -y install libX11-devel
yum -y install libXfixes-devel


(4)xrdpの設定・コンパイル・インストール
./bootstrap
./configure
make
make install


(5)キーマップファイルの作成
・GUI環境で仮想コンソールを起動し、キーマップを作成
/usr/local/bin/xrdp-genkeymap /etc/xrdp/km-0411.ini

・リンクファイルを作成
ln -s km-0411.ini km-e0200411.ini
ln -s km-0411.ini km-e0210411.ini
ln -s km-0411.ini km-e0010411.ini


(6)OSをリブート
このままxrdpを起動するとログインできなかったため、一旦OSをリブートしました。

(7)ファイアウォールの設定
こちらの「3.iptablesの設定」と同様に、FW(iptables)にリモートデスクトップの接続を許可する設定を追加します。

(8)xrdpを起動
/etc/xrdp/xrdp.sh start



これで完了。日本語表示もうまくいっています。
デスクトップ(KDE)


ただ、Ctrl + Spaceでは日本語入力機能を起動できませんでした(コンソールからなら可能)。バックスラッシュが利かないのも解消していないので、次回はその辺をなんとかします。

参考サイト
  • irusu::備忘録 - さくらのVPS 980にyumでgitをインストール


  • 今、複数ユーザ(500人程度)が使用するターミナルサービス環境を検討してるんですが、MSのターミナルサービスを使おうとするとライセンス費用(TS-CAL)が結構大変なことになることが判明・・

    対抗案として、オープンソースでターミナルサーバを作れないかと探してみると、「xrdp」が良さそうだったので試してみます。

    手順に関しては、こちらのブログエントリを参考に、というかほぼそのまま実行しました。
    Linuxで複数ユーザで使えるリモートデスクトップ環境を作る
    xrdp 0.5.0 (cvsベース)

    環境はVMWareServer2.0上のCentOS5.5です。
    OSインストール時にgnomeデスクトップ環境をオプションパッケージはデフォルトのままインストールしています。

    意味は後から考えればよいかと思いまして、参照させていただいたブログの手順どおりに実施しました。

    (1)cvsリポジトリから最新版のソースコードを入手します。2011/3/6時点で0.6.0が入手できました。
    # mkdir xrdp
    # cd xrdp
    # cvs -d:pserver:anonymous@xrdp.cvs.sourceforge.net:/cvsroot/xrdp login
    ※パスワードは無しでOKです。
    # cvs -z3 -d:pserver:anonymous@xrdp.cvs.sourceforge.net:/cvsroot/xrdp co .

    (2)ファイルを修正します。
    # cd xrdp
    # vi xrdp/lang.c
    if ((code >= 0) && (code < 128))
    ↓変更
    if ((code >= 0) && (code < 135))

    # vi xrdp/xrdp_types.h
    struct xrdp_key_info keys_noshift[128];
    struct xrdp_key_info keys_shift[128];
    struct xrdp_key_info keys_altgr[128];
    struct xrdp_key_info keys_capslock[128];
    struct xrdp_key_info keys_shiftcapslock[128];
    ↓変更
    struct xrdp_key_info keys_noshift[135];
    struct xrdp_key_info keys_shift[135];
    struct xrdp_key_info keys_altgr[135];
    struct xrdp_key_info keys_capslock[135];
    struct xrdp_key_info keys_shiftcapslock[135];

    ※128をすべて135に変更します。

    (3)コンパイルしてインストールします。
    # ./bootstrap
    # ./configure

    configure実行時にパッケージが足りないというメッセージが出てきたので、指定されたパッケージを追加
    # yum -y install libX11-devel
    # yum -y install libXfixes-devel

    再度configure後、make → make install
    # make
    # make install

    (4)キーマップを作成します。GUI上の端末で実行します。
    # /usr/local/bin/xrdp-genkeymap /etc/xrdp/km-0411.ini

    キーマップのシンボリックリンクを作成します。
    # cd /etc/xrdp/
    # ln -s km-0411.ini km-e0200411.ini
    # ln -s km-0411.ini km-e0210411.ini
    # ln -s km-0411.ini km-e0010411.ini
    ここも意味は理解していませんが、これをやらないとキーボードが利きませんでした。

    (5)起動します。
    # /etc/xrdp/xrdp.sh start

    (6)接続
    リモートデスクトップクライアントを起動し、xrdpを起動したサーバのIPアドレスに接続すると、以下ログイン画面が表示されます。
    Posts22_01

    普通にユーザー名とパスワードでログインできました。
    Posts22_02

    Posts22_03

    取り急ぎやってみましたが、問題なく動いています。というか、サクサク動いて快適です。

    現時点で判明している問題点は以下2点
    ・英語表記になっている
    ・バックスラッシュキーが利かない

    あと、恥ずかしながら手順の途中でのソースコード修正の意味がまったく分かってません(笑)

    今後の課題は以下のとおり
    ・上記問題点の解決
    ・日本語入力環境を整える
    ・1接続あたりの必要帯域を算出する
    ・ロードバランシング環境で動かしてみる
     ※500ユーザは1サーバではさばけないと思うので・・
    ・ActiveDirectoryで認証させる

    道は長そうです・・・

    Before  | Copyright © ふたごパパのサーバ構築日記 All rights reserved. |  Next

     / Template by 無料ブログ テンプレート カスタマイズ
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。