• 締切済み

C言語で作ったサーバーのようなプログラムをインターネット越しに

C言語で作ったサーバーのようなプログラムをインターネット越しに 通信出きるようにしたいのですが、方法がよくわかりません。 ちなみに今まで自宅サーバとかは一度も構築したことがありません。 一応動作テストで、サーバープログラムを可動しているPCとは別に 同じネットワーク内にあるPCでインターネットブラウザを使用して、 アドレス入力欄にプライベートipアドレスを入力してアクセスしたところ、 問題なく接続できたのですが、 グローバルipアドレスを入力してアクセスすると接続することができませんでした。 たぶん、この結果ですとインターネットからの接続は無理ですよね? ですから、どのようにすればいいのか教えてください。 使用しているルータはbuffaloのWHR-HP-Gで プロバイダはOCN、料金プランはOCN光withフレッツマンションです。 OSはdebian lenny5.0でテストに使用したインターネットブラウザはfirefoxとw3mです。

みんなの回答

回答No.4

マンションに一つ大きいルータがあってそこから各戸に分配しているタイプではないですか? その場合、ルータの設定は勝手にできないので、やろうとしていることは無理ですね。(あなたのおうちがが無理かどうかはわかりません。)

すると、全ての回答が全文表示されます。
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

なぜ無理だったかと言うと、TCP-IPではなかったからという可能性があります。 UDPではインターネット越しの通信は不可能です。 (通信手段を書いてなかったのでTCPかUDPか不明、IPアドレスって事はどちらかなのだろうと思いましたが) 次に、ルータのセキュリティ設定。 ルータは基本的にファイアウォール機能を持ち、外部からのアクセスを排除しようとしています。 ファイアウォールに限らず、他のセキュリティ設定を変更することも場合によっては必要です。 ※当然OFFにすると、セキュリティ的に大問題ですし、セキュリティを一部解除することはセキュリティホールとなり得ます さらに、ルータのルーティング設定(用語としては不正確かな?) グローバルIPはルータに振られます。 ルータから下はローカルIPです。 グローバルIPで通信が来た場合、ルータはどのPC(ローカルIP)に対する通信だと判断するのでしょう? そんなこと判断しませんよ、ルータに対する通信でしかありません。 ルータに該当プログラムをインストールするしかないですね(不可能ですが)。 ルータにバーチャルサーバ機能(メーカーによって呼び名は異なる)があれば、特定ポートへのアクセスは特定PCへのアクセスであるとルーティングさせることができます。 (※簡易的な説明、実際はもっと設定項目が多い) それを設定すれば、外部からのアクセスが可能になります。 やっと、外部からPCまでアクセスできるようになりましたので、次はPCの設定。 Wndowsファイアウォール、ウィルスバスター等のパーソナルファイアウォール機能を、適切に設定しましょう。 ここまでが最低限必要ですし、通信ができない場合どこの設定が悪いのか、調べられるスキルが必要かも知れません。 そして、通信に成功した場合は、自分から好き好んでセキュリティホールを空けているという事実も忘れてはいけないでしょう。 踏み台にならないように管理するとか、データが盗まれないようにデータを置かないとか、万一の覚悟をするとか。 と、長々と書きましたが、VPNの導入をお奨めしますね。 インターネット経由でLANを構築するようなものです。 これであれば完全に安全ですと言い切ることはできないにしても、それなりの対策は施されているので素人が作ったものよりも格段に安全でしょう。

nesnes
質問者

お礼

わざわざ、丁寧に回答していただき有難うございました。 もう一度、ルーターの設定並びにルーティングテーブルを見直してみようと思います。 あとVPNの方はもう少し調べた後に導入するか考慮使用と思います。

nesnes
質問者

補足

>>なぜ無理だったかと言うと、TCP-IPではなかったからという可能性があります。 すいません、使用したプロトコルはTCP/IPでした >>UDPではインターネット越しの通信は不可能です。 UDPプロトコルを使用するサーバーとクライアントどうしなら可能です。

すると、全ての回答が全文表示されます。
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

一般にインターネットから家庭LAN内のコンピュータにアクセスするには、ルータへの設定が必要ですが、そのような設定を行ってもLAN内からはグローバルIPアドレスでの接続は行えません。 従ってインターネットからのアクセスが可能か確認するには誰か外部からアクセスして貰うか、インターネット上のコンピュータにSSHでログインするなどして外部経由でアクセスする必要があります。

nesnes
質問者

お礼

ありがとうございました。 一度、ルータの設定を見直した後に誰かに協力していただこうと思います。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

自分自身のグローバルIPを指定してアクセスした場合にはアクセスできないことがありますので、他のグローバルアドレスからアクセスしてみないとインターネットから接続できるかどうかは不明です。

nesnes
質問者

お礼

回答していただき有難うございました。 一度、知人にでも協力してもらうことにします。

すると、全ての回答が全文表示されます。

関連するQ&A