ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者がFreeBSDをいじる会コミュのファイル共有サーバ samba3.0のインストールと設定 その2

  • mixiチェック
  • このエントリーをはてなブックマークに追加
samba3.0のファイル共有サービスに
インターネットを介した外部から接続する。いや、しようとする。

サーバOS:FreeBSD6.1-RELEASE
クライアントOS:Windows XP Home Edition

ひたすらこれです。
長いですが、まだ終わりません。
覚え書きだととってください。

前回2006年11月17日に
ここに掲載した覚え書きでは、なんとか同一LAN内の
Windows機からの接続が成功し、共有フォルダが見れたところまで
行ったのだが、家の外、ネットの向こう、ルーター・モデムの向こうから
接続できるようにしなければいけない。

ここでぶつかったのが、自宅のLANの中だけで通じているIPアドレス(ローカルアドレス)
は一歩外(モデムの向こう)に出ればまったく通じないアドレスだということだ。

sambaサーバーを立てているBSD機のローカルアドレスは192.168.0.3だが
外からそのアドレスを打ってももちろん接続できない。
自分の家の外の世界(インターネット)に向けてのアドレスは…モデムの外側の片方に
ついている。

それはどうやら固定と非固定とあって、その名の通り、固定ってのは電源を落として
ネットとの接続を切っても常に同じアドレスがついている。
非固定ってのはネットにつないだり一定時間ごとに自分が契約している
プロバイダ(ソネットとかヤフーとか)が割り振ってくれるもので、変わっていく。

で、固定ってのはお金で買える。
ここでドメインってのがでてくる。
その256.173.57.023とかいう数字のIPアドレスと対応してる、
アルファベットとか数字でできたアドレス、
例えば mixi.jp なんかそうだ。
対応づけがなされてれば、ブラウザにアドレス欄とかにどっちを入れてもつながる。
自分のバンドのHPを作ったときも、value-domain.comってとこでドメインを買った。
年に990円だったから、そんな高いものじゃない。

でも、調べると、どうやら非固定のIPアドレスでも言えば(ボタンを押す)その時に、
自分の考えたドメインと関連付けてくれるところがあるようだ。しかも無料で。
で、自分はieServer.Netというところで1つ作ってみた。
ここのサイトはIPアドレス登録というページがあり、
登録したユーザー名とパスワードを入れて入る。
そこにあるボタンを押せば、現在自分に割り振られている非固定の
IPアドレスを、ドメインに割り当てられる。

だが、いちいちそこのページまで行ってたんじゃあまりに面倒だ。
幸いそこに、そこのページにつなげて更新をしてくれるスクリプトのテキスト
ddns-update.txt
があるので、
それをダウンロードしてくる。
そのスクリプトの実行にはcron,Perl,wgetが利用可能である必要ありとのこと。
wgetはURLをしてすると、ダウンロードしてくれるソフト。
# cd /usr/ports/www/wget4web で、
# make install clean
でインストール完了。
Perlは.pl形式のスクリプトを実行してくれるが、これは入っていた
cronはコマンドで、指定した時間に指定したコマンドを自動で実行してくれる。
これを使って10分おきくらいにスクリプトを実行してやる。

で、ddns-update.txtファイルをviエディタで開くと
めちゃくちゃな記号の羅列がでてくる。
どうやら日本語で解説がついているらしい。
ので、日本語表示ができるjvimで開く。
(インストールしていない人は11/12付けのjvim覚え書きを参考にして下さい。)

cronの設定例やらいろいろ書いてある。
で、中ほどの
ieServer.Netで自分の決めたドメイン名はhogehoge.dip.jpなんだが、
$ACCOUNT にhogehoge
$DOMAIN に.dip.jp
$PASSWORD にパスワード
を入れる。

気になったのが、
# DDNS更新ページURL
# wgetをSSL接続可能でビルドしているなら、https:// での接続を推奨
$DDNS_UPDATE = "http://ieserver.net/cgi-bin/dip.cgi";

だが、推奨してるから http:// んとこを https:// にした。
でもこれだと自分は出来なかった。
このsはSSL接続っていう割と安全な接続を使うらしいが、
この接続をするための OpenSSLってのも入れなきゃいけない。
で、
# cd /usr/ports/security/openssl
# make install clean

でもつながらなかった…。
でもこれは、後回し、とりあえずhttp://でつながってから考えよう。

で、このテキストファイルをddns-update.plという名前で
新しく作ったディレクトリ/usr/local/ddns に保存。

cron を実行させるため、自分のホーム下に
.crontab ファイルを作成。
5,15,25,35,45,55 * * * * /usr/local/ddns/ddns-update.pl
の一行を記述。(分 時 日 月 曜日 コマンド)で指定。
つまり5,15,25,35,45,55分に実行ってことだな。

# crontab ~/.crontab でこの設定ファイルを登録。
# crontab -l とすると、cronに登録されているのが分かる。

う〜ん。でも自動でやってくれない。
logファイル ip_update.logを覗いても動いた形跡がない。
コマンドラインから # Perl ddns-update.plとやると動いてくれるんだが、
時間になっても自分から動いてくれない。

これはperlのプログラムでperlコマンドで起動できるはず、
コマンドラインから、
$ perl /usr/local/ddns/ddns-update.pl
とやると手動で起動する。
じゃ、
5,15,25,35,45,55 * * * * perl /usr/local/ddns/ddns-update.pl
と書き込んでおく。

…だめだ。

とりあえず手動で hogehoge.dip.jp にグローバルアドレスを動的につけよう。
あとまわしだ。


しかし、それはまだ、モデムの外側についただけ。
表札ができたけど、家の中まで案内してくれない。っていう感じか?

ブラウザでhogehoge.dip.jpと打ってももちろんつながらない。

苗字は分かるが、家族の誰のとこに行けばいいのか分からないと。

自宅には3台パソコンがあって、LANでつながっている。
それぞれ、192.168.0.2、192.168.0.3、192.168.0.4
のプライベートアドレスを持っている。
192.168.0.1はモデムの内側についているアドレスだ。

調べるとモデムに内臓されているルータの機能で、
IPマスカレードという機能を使えば、家族の誰かのとこに案内してくれるという。
プロバイダーからレンタルしているモデムの説明書を引っ張り出すと、
幸いその機能がついてる(今はほとんどついてるらしい)。

パソコンにはポートという窓口が65535個あって。
たとえばホームページ閲覧に使われるhttpという通信規約?(プロトコル)だと、
80番だとか決まってるのもあり、またそうでないのもある。
IPマスカレードというのは外からあるポート宛てに送られてきたデータは
家の中(LAN)のどのパソコンに送るかってのを対応づけてくれるもの。もちろん対応づけの指定は自分でするんじゃが。

445番のポート宛てはsambaサーバを起動しているパソコン(192.168.0.3)へ、とか。

「Windows 2000以降では、ファイル・プリンタ共有を行なう際に、
従来から用いられてきた139/tcpポートを使用するNBT(NetBIOS over TCP/IP)の代わりに、
デフォルトでは445/tcpを使用するような実装になっている」らしい。

ということで、モデムのIPマスカレード設定画面で(大抵192.168.0.1のアドレスをブラウザで打つとつながる)
445番→192.168.0.3
と設定してやる。
TCPかUCPかではTCPを選択。

このsambaにはswatというブラウザ上で各種設定ができる機能があるんだが、
このswatは901番のポートを利用し、
http//:Sambaのサーバ名(またはIPアドレス):901
とういアドレスでつながる。
URLの最後に「:ポート番号」を指定してやると、そのポート宛てに出せるのか?

ここでsambaの設定ファイル
/usr/local/etc/smb.conf
の[global]部の設定で、
hosts allow =

192.168.0. 127.
と、
自宅内LAN(ローカル)だけからの接続を許可にしてたのを
ALL
と、外からも接続を許可するように変えておく。
にしておく。

で、サーバと同一LAN内のパソコンから、
http://hogehoge.dip.jp:445
で、アクセスしてみる。
お〜ドキドキするな…
…つながらない。
ページが見つからないだと。

う〜ん。。
前回同じLAN内のWindowsからつなげてみたときに気づいたが、
マイネットワーク→ネットワーク全体→Microsoft Windows Network
から見るとブラウザに表示される共有ファイルのアドレスは
ネットワーク全体\\\サーバPC名\共有ファイル名
と表示される。
だがブラウザに直接アドレスを「\\サーバPC名」と打ってみたら
file://サーバPC名/
と変換?されてアドレスの表示がでる。
もちろん↑を直接打ってもつながる
そういやhttp使うのはAppachとかのwwwサーバだったな。
な〜んだ。
http://じゃなくて、file://としてやればいいのか?

file://hogehoge.dip.jp:445
…つながらん!

ホストのネットワーク接続状態を調べるコマンドは確か…netstat
サーバ側で
# netstat -n とやってみる。(-nオプションはポート番号で表示)

Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.0.3.139 192.168.0.2.1258 ESTABLISHED
tcp4 0 0 192.168.0.3.22  192.168.0.2.1246 ESTABLISHED
udp4 0 0 192.168.0.3.138  *.*
udp4 0 0 192.168.0.3.137  *.*

Windows側(192.168.0.2)とつながってるのは
ポート番号22番のssh接続に使われるもの。
これはTeraTermという遠隔操作ターミナルソフトを使ってるからだよなぁ。
139番はなんだ?
これはマイネットワーク→ネットワーク全体→Microsoft Windows Network
でサーバの共有ファイルにつなげた接続なのかも。
じゃ、と139番もIPマスカレードでサーバ機に対応づけて、
file://hogehoge.dip.jp:139
…つながらず。。
もしや、このドメイン"hogehoge.dip.jp"が今の自分とこのグローバルIPアドレスと
対応してないんじゃ…と、file://現在のグローバルIPアドレスとやるも結果は同じ。


ポートが開いてないのでは?

sambaにはポートを使うデーモンが2つあってsmbd、nmbdがそれで、
それぞれSMB通信とNMB通信を担当している?

SMB通信を受け付けるサーバ上のデフォルトポートは139番と445番 /TCP
NMB通信を待機するデフォルトのポートは137番です /UDP

SMB はServer Message Block の略で
Windows間でのファイル共有やプリンタ共有を実現するネットワークプロトコル。
NMB は…よく分からん。
ファイル共有フォルダとかをブラウザ上で見れたりする関係か?(138番/UDPがこれに関係との噂も…)
137番は名前の登録(ユーザー名入力?)に使用との記述もあった。

これらが開いていればいいのだろう。
調べてみると、
どのポートが開いてるのか調べるのはnmapというソフトでできるという。
Portsに含まれていたので、早速インストール
# /usr/ports/security/nmap
# make install clean

# nmap 対象マシンのIPアドレス(ここでは自分自身の192.168.0.3)
すると…
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-11-24 21:14 JST
Interesting ports on 192.168.0.3:
Not shown: 1677 closed ports
PORT STATE SERVICE
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds

Nmap finished: 1 IP address (1 host up) scanned in 23.573 seconds

てな具合にでてくる。

139番と445番はちゃんと開いている。

ところが、また脱線する事態が!
もう一度接続試してみたりとかして、確認で netstat -n などしているうちに、
ふと見ると、
[root /usr/local/ddns]# netstat -n
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.0.3.445 219.98.207.44.1280 ESTABLISHED
tcp4 0 0 192.168.0.3.139 192.168.0.2.1258 ESTABLISHED
tcp4 0 0 192.168.0.3.22  192.168.0.2.1246 ESTABLISHED
udp4 0 0 192.168.0.3.138  *.*
udp4 0 0 192.168.0.3.137  *.*

と、知らないIPアドレス(219.98.207.44)がこのパソコン(192.168.0.3)にポート445番に
つないでいる?!
これは…何か嫌な感じがする…。
よく、ネット上で445番は危ないという記述は目にしたしな。

相手が誰か知りたいので、
nmapをその知らないアドレスに使ってみる。
で、出てきたのが、

tarting Nmap 4.01 ( http://www.insecure.org/nmap/ ) at 2006-11-20 15:25 JST
Interesting ports on p2921a5.hkidnt01.ap.so-net.ne.jp (219.98.207.44):
(The 1669 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
135/tcp open msrpc
1025/tcp open NFS-or-IIS
5000/tcp open UPnP

てな感じ。
…よく分からん。
相手のポートでオープンしてるのが135、1025、5000番なんだが、
調べたところ、この1025も5000もトロイの木馬がどうたらという記述を目にする、
でもこっちの1025や5000へのアクセスなら分かるが、向こうが開いてたってなぁ…。

個別のポートを閉じる方法が分からないので、一度再起動してやる。
# /usr/local/etc/rc.d/samba.sh restart
とやるといいらしいが、そんなファイルはない。
ただのsambaというファイルがその/rc.dディレクトリにapache.shとかと混じってある。
怪しい。
# file samba
とファイルの種類を調べると、Bourne shell scriptだ。
で、
# /usr/local/etc/rc.d/samba restart
で、smbdとnmbdが再起動できた。

でもしばらくすると、また違うアドレスが445番につなげてて、
しかもみな、そのアドレスが開いてる。
杞憂なのかも知れないが、ろくに何も知らないから心配になる。
まだセキュリティ的に不安だし、
その度にこっちが再起動。

う〜ん。
サンバに外部からつなげる計画はどこへいった?

それがなんとだな、sambサーバと同じLAN内のパソコンからだと、
ドメイン(グローバルアドレス)を指定してもつながらないという記述を発見。
この一日はなんだったんだ…。

で、パソコンを持ってネットにつないでいる知り合いに電話して、
file://hogehoge.dip.jp
file://グローバルIPアドレス
file://hogehoge.dip.jp:445
file://グローバルIPアドレス:445

の4通りをブラウザのアドレス欄に打ちこんでつないでもらった。

結果
上の2つ":445"をつけてないほうのアドレスで共有ファイルが見れた!

いや〜ほーんと長かったわい。。。。

でもまだまだ続きます。
セキュリティが低いので、そこをなんとかせねば。

コメント(0)

mixiユーザー
ログインしてコメントしよう!

初心者がFreeBSDをいじる会 更新情報

初心者がFreeBSDをいじる会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング