投稿日:2002年11月13日 作成鷹の巣

No.6372 外部から自前ルータのクライアントにアクセスさせたい



外部から自前ルータのクライアントにアクセスさせたい

No.6372 投稿時間:2002年11月13日(Wed) 00:18 投稿者名:naru URL:

よろしくお願い致します。DNSの勉強をしています。

ADSLモデム
|
ppp0
vine2.5(host1.dyndns.net)
eth0
|
|─Win2k(host3.host1.dyndns.net)
|
eth0
TurboLinuxW8(host2.host1.dyndns.net)

としています。

ダイナミックDNSサーバでドメインを取得しました。host1.dyndns.net

host1の/etc/named.confには
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "host1.dyndns.net" {
type master;
file "/var/named/host1.dyndns.net.hosts";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/var/named/192.168.0.rev";
};


/var/named/192.168.0.revには
$ttl 38400
0.168.192.in-addr.arpa. IN SOA localhost. root.host1.dyndns.net (
1034148765
10800
3600
604800
38400 )
0.168.192.in-addr.arpa. IN NS localhost.
1.0.168.192.in-addr.arpa. IN PTR host1.dyndns.net.
89.0.168.192.in-addr.arpa. IN PTR host3.host1.dyndns.net.
33.0.168.192.in-addr.arpa. IN PTR host2.host1.dyndns.net.

/var/named/localhost.zoneには
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

1D IN NS @
1D IN A 127.0.0.1

/var/named/named.localには
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.

1 IN PTR localhost.

/var/named/host1.dyndns.net.hostsには
$ttl 38400
host1.dyndns.net. IN SOA localhost. root.host1.dyndns.net (
1034148339
10800
3600
604800
38400 )
host1.dyndns.net. IN NS localhost.
host1.dyndns.net. IN A 192.168.0.1
host3.host1.dyndns.net. IN A 192.168.0.89
host2.host1.dyndns.net. IN A 192.168.0.33

/etc/resolv.confには
nameserver 127.0.0.1

と記述しています。これで3マシン全てから名前解決(インターネット)できるように
なりました。

外部からはhost1のSSHサーバへアクセスできます。
($ ssh host1.dyndns.net)

それでhost3にもSSHサーバが稼動してまして内部ホストからは
$ ssh host3.host1.dyndns.net
でアクセスできます。これを外部からも行いたくて
/var/named/host1.dyndns.net.hostsに
$ttl 38400
host1.dyndns.net. IN SOA localhost. root.host1.dyndns.net (
1034148339
10800
3600
604800
38400 )
host1.dyndns.net. IN NS localhost.
host1.dyndns.net. IN A 192.168.0.1
host3.host1.dyndns.net. IN A 192.168.0.89
host2.host1.dyndns.net. IN A 192.168.0.33
ssh1.host1.dyndns.net. IN CNAME host3.host1.dyndns.net

と書き加えてリブートして外部ホストから

$ ssh1 host1.dyndns.net

としてhost3のSSHサーバにアクセスできるかを試してみたのですが

$ ssh1 host1.dyndns.net
Secure connection to ssh1.host1.dyndns.net refused; reverting to insecure
method.
Using rsh. WARNING: Connection will not be encrypted.
host1.dyndns.net: ホストへの経路がありません。
$ host ssh1 host1dyndns.net
ssh1.host1.dyndns.net is a nickname for host1.dyndns.net
host1.dyndns.net has address 219.112.73.85
host1.dyndns.net mail is handled (pri=10) by mail.goo.ne.jp
host1.dyndns.net mail is handled (pri=5) by host1.dyndns.net

となってしまいました。

どうすれば外部からhost3のSSHにアクセスさせれるのでしょうか?


グローバルとプライベートの世界の違いをよく調べてみては?

No.6374 投稿時間:2002年11月13日(Wed) 03:42 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> host1.dyndns.net. IN NS localhost.
> host1.dyndns.net. IN A 192.168.0.1
> host3.host1.dyndns.net. IN A 192.168.0.89
> host2.host1.dyndns.net. IN A 192.168.0.33
> > 外部からはhost1のSSHサーバへアクセスできます。
> ($ ssh host1.dyndns.net)

そもそも、DNS ファイルの設定以前に、外部から host3 へ通じていない気がします。
host1 がグローバルを持っていて、host1 のルーティングにより host2, host3 はプライベートで運営されているのでしょうか?

外部(グローバルな世界)から見れば、グローバル IP を持っているのは host1 ですから、いくらプライベート解決の内向き DNS を立てても、host3 へは直接は通じません(ルーティングでポート転送をしていれば直接のアクセスは可能ですが、host1 も SSH が立ち上がっていることを考えると…)。
外部から、「192.168.x.x にアクセスせよ」と言っても、通じることはないですね。

せっかく host1 に SSH が立ち上がっているのであれば、それを無駄にせずに、外部 -> host1 -> host3 のように host1 を中継すればよいと思います。
これで行けると思います。

> > $ ssh1 host1.dyndns.net
> Secure connection to ssh1.host1.dyndns.net refused; reverting to insecure
> method.
> Using rsh. WARNING: Connection will not be encrypted.
> host1.dyndns.net: ホストへの経路がありません。

これは、$ssh ssh1.host1.dyndns.net の間違いではありませんか?
CNAME しても、現在外部からまず見えるホストは、グローバルな host1 ですから、host3 は見えません。

> $ host ssh1 host1dyndns.net
> ssh1.host1.dyndns.net is a nickname for host1.dyndns.net
> host1.dyndns.net has address 219.112.xxx.yyy

ここで、219.112.xxx.yyy と出力されているということは、グローバルなホストを探しに行っています。
ですから、host3 がグローバルな SSH を受けつけられれば、外部 -> host3 へ直接行けます。

その他、DNS のファイルのシリアルは、こまめに増やしていますか?

正直私は、SSH の世界はあまり知りません。
naru さんがどの程度の知識をお持ちかも分かりませんが…。


インターネットとの境界のホストで、ゲートウェイを作って下さい。

No.6386 投稿時間:2002年11月13日(Wed) 20:10 投稿者名:鷹の巣 URL:http://sakaguch.com/

> せっかく host1 に SSH が立ち上がっているのであれば、それを無駄にせずに、外部 -> host1 -> host3 のように host1 を中継すればよいと思います。
> これで行けると思います。
>
> > > $ ssh1 host1.dyndns.net
> > Secure connection to ssh1.host1.dyndns.net refused; reverting to insecure
> > method.
> > Using rsh. WARNING: Connection will not be encrypted.
> > host1.dyndns.net: ホストへの経路がありません。


インターネット上からnaruさんのサイトをどの様にアクセスしても結局は、
グローバルアドレス1個に名前解決されてアクセスすることになります。

ルータに相当するhost1.dyndns.netで、サービスポート番号により、アクセスする
サーバーを分ける(ポートフォワーディング)のは、比較的簡単ですが、
ホスト名でアクセスするサーバーを分けるのは、ちょっと厄介です。
(内向きのDNSサーバーには、この機能は、ありません。)

サービスポート番号が同じSSHの場合ですが、Webサーバーのバーチャルホストの様なことを
インターネットとの境界のホスト(host1.dyndns.net)で行わなければなりません。
ルータは、特定のプロトコル(通信手順)しか通過させませんが、
ゲートウェイには、その制限がありません。

こちら
http://etc.raibo.com/ipforward2.htm
にDELEGATEの設定がありますので、ご一読願います。

その上で、キーワードを見つけて、インターネットを検索すれば、多くの回答が得られると考えます。
http://homepage1.nifty.com/yito/anhttpd/faq/gateway2.html
http://homepage1.nifty.com/yito/anhttpd/faq/gateway.html


パケットの中には送信先グローバルアドレスと送信先ポート番号が格納されている?

No.6422 投稿時間:2002年11月16日(Sat) 15:18 投稿者名:naru URL:

ご回答ありがとうございます。

早速、拝見してみました。ダイナミックDNSでは*.dyndns.netに設定(ホスト名は自由に命名できる)できるようにしています。
その為、hoge.dnydns.netでもfoo.dyndns.netでも同一のIPグロアドにしか解決しません。
それ以上の機能は無いみたいです。

つまり、私にマシンにはパケットの識別はIPグロアドと送信先ポート番号しか無い訳ですよね。
という事はhoge.dnydns.net:80でもfoo.dyndns.net:80でも全く同じパケットにしか私のマシンには認識出来ない訳ですよね。
(必ず、送信元→ダイナミックDNS→delegate→LAN内の各サーバ
という順にパケットは動いていくわけでしょうから)


読んでみまして、どうしてdelegeteでhoge.dnydns.net:80とfoo.dyndns.net:80のパケットが判別できるのか謎です。
delegeteでは各バケットのアプリケーション層のヘッダー(?)情報でそのパケットがhoge.dyndns.netを意図したものか
foo.dyndns.netを意図したものかを判別できるという事ですかね?

するとパケットの中には送信先IPグロアド、送信先ポート番号、(アプリ層に)hoge.dnydns.netかfoo.dyndns.netかの文字列が
格納されて届いているという訳ですかね。(当たってますでしょうか)そうなら納得できます。

正解をお教えください。


受けた方はホスト名により振り分けます。

No.6423 投稿時間:2002年11月16日(Sat) 19:47 投稿者名:OAK URL:

> するとパケットの中には送信先IPグロアド、送信先ポート番号、(アプリ層に)hoge.dnydns.netかfoo.dyndns.netかの文字列が
> 格納されて届いているという訳ですかね。(当たってますでしょうか)そうなら納得できます。
>
> 正解をお教えください。

それほど難しい話でなく、クライアントはサーバーに回線をつなぐとすぐに
URL情報を送ります。その中に
ホスト名、ディレクトリー名、GET/PUTの情報、何処からつないだか
クッキー、プロキシ情報などがあります。
受けた方はホスト名により振り分けます。


Squidでは出来ないのでしょうか?

No.6437 投稿時間:2002年11月20日(Wed) 13:52 投稿者名:naru URL:

> それほど難しい話でなく、クライアントはサーバーに回線をつなぐとすぐに
> URL情報を送ります。その中に
> ホスト名、ディレクトリー名、GET/PUTの情報、何処からつないだか
> クッキー、プロキシ情報などがあります。
> 受けた方はホスト名により振り分けます。
これを垣間見るツールってあるのでしょうか?

IPヘッダ情報を見るためにtcpdumpというツールが有るように
アプリ層ヘッダ情報を見るためのツール。。。


それと、Squidというのも有名なプロキシサーバソフトみたいですがこれではdelegateと同様の事は出来ないのでしょうか?


ツールとSquid

No.6438 投稿時間:2002年11月20日(Wed) 17:50 投稿者名:OAK URL:

> これを垣間見るツールってあるのでしょうか?

私が使っているのはWindows版ですが「VIGIL」と言うソフトです
http://homepage2.nifty.com/spw/

> それと、Squidというのも有名なプロキシサーバソフトみたいですがこれではdelegateと同様の事は出来ないのでしょうか?

たぶん大丈夫ではないかと。「パソコンおやじ」http://www.aconus.com/~oyaji/
さんが使っていますので、聞いて見たらいかがでしょう。


単にhost1とhost3にアクセスしたいのなら簡単では。

No.6442 投稿時間:2002年11月20日(Wed) 22:38 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

OAKさんが呼んでいるので、顔だしました。

全体の話から、naruさんがやりたいことは、外部からhost1とhost3に
SSHで接続したいでいいのでしょうか。それともホスト名でのアクセスで
なければならないのでしょうか?
後者なら、おやじは答えを今の時点ではもっていません。しかし、前者
ならどうってことはないと思います。
host1とhost3を異なるポート(例えば、22と10022)で動かし、ルータで
スタティックNATを22はhost1へ、10022はhost3に切り、アクセス時にポート
指定すれば繋がりますよ。(ipchainsの設定も)1台で22と10022を動かすこと
もできます。あまり意味がないかも知れませんが。(ポートフォワーディング
と組み合わせると何かできる?)

host1: $ ssh -p 22 host1.dyndns.net
host3: $ ssh -p 10022 host1.dyndns.net

ところで、わざわざADSLモデムをルータではなく、ブリッジで動かしている
のでしょうか?サーバこけたら一切インターネットアクセスできなくなるのと、
いろいろなデーモンが動いているサーバをインターネットにさらけ出すことに
なるので、管理が大変でしょうね。


ホスト名で振り分ける事が不可能ならポートフォワーディングしかないと思ってます。

No.6446 投稿時間:2002年11月21日(Thu) 01:46 投稿者名:naru URL:

ご回答ありがとうございます。

>> これを垣間見るツールってあるのでしょうか?
> 私が使っているのはWindows版ですが「VIGIL」と言うソフトです
> http://homepage2.nifty.com/spw/
ご紹介ありがとうございます。やはり、Linux版はなかなか無いのですね。

> 後者なら、おやじは答えを今の時点ではもっていません。しかし、前者
> ならどうってことはないと思います。
後者です。どうしてもホスト名で振り分ける事が不可能ならポートフォワーディングしかないと思ってます。

そうしますとSquidでは後者は無理という訳ですね。

Delegateでがんばってみます

> ところで、わざわざADSLモデムをルータではなく、ブリッジで動かしている
> のでしょうか?
ん? ppp0とeth0で振り分けているからブリッジで動かしていると言えるのですかね。

>サーバこけたら一切インターネットアクセスできなくなるのと、
> いろいろなデーモンが動いているサーバをインターネットにさらけ出すことに
> なるので、管理が大変でしょうね。
ADSLモデム
|
Linuxルータ
|
Linuxゲートウェイ
|
|_クライアント
|
|_クライアント

というのがいいですかね。


ルータです。

No.6452 投稿時間:2002年11月21日(Thu) 13:23 投稿者名:naru URL:

> ところで、わざわざADSLモデムをルータではなく、ブリッジで動かしている
> のでしょうか?
iptablesでIPマスカレードやパケット転送しているのでルータですね。失礼いたしました。


|目次|掲示板|過去ログ目次|▲頁先頭|