• 締切済み

UDPで、ブロードキャスト(ルータ越え)

いつもお世話になっております。 UDPでの通信で、複数のLANで情報(会議中・離席中などの個人の状況)を共有したく ブロードキャストで一斉送信といった方法でできないかと模索中です。 IPアドレスを一個ずつ指定しての送信はうまく行くのですが ブロードキャストにすると、自分のLAN内でしか情報のやり取りができません。 色々調べて、ルータの設定でできるようになるということで 設定を色々いじってみたのですが、受信と送信で受け付けるIPとポートを設定しても 全く意味がありませんでした。 各LAN内に端末がたくさんあるので IPアドレスを一つずつ設定するといった面倒なことは避けたいです。 UDPでこの方法を実現するために、何か気をつける事や見落とし または、自分のところではこんな仕組みで動いている などがありましたらお願いします。 参考までに 開発環境はVisualStudio2008 C#です。

  • tasoh
  • お礼率87% (65/74)

みんなの回答

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.3

> ルータにはBRC-14VGを使用しているのですが、これでも設定で直せるでしょうか? このルーターは、インターネットに接続するためのNATルーターですよね。 質問文では社内に複数のLANがあるとのことでしたので、複数のルーターを 使用して社内のイントラネット内でのLAN間通信を想像しましたが、 もしかして外部インターネット経由で社内のLAN同士を接続しているのでしょうか? また、このルーターはVPNサーバー機能を持っていますが、既にVPNを構築している のでしょうか? このあたりのネットワーク構成がわからないとなんとも言えませんが、 いずれにしてもポイントはブロードキャスト先のLANに接続しているルーターです。 送信元からブロードキャスト先まで、どのようにネットワークが構成されているか 具体的に開示されれば、もう少しアドバイスできるかもしれません。

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.2

LAN外にブロードキャストするには、 ディレクティッド・ブロードキャスト を使用します。 (参考) http://www.atmarkit.co.jp/fwin2k/network/baswinlan008/baswinlan008_03.html ただし、ルーターによっては、この ディレクティッド・ブロードキャストも 通さないものがあります。 たいていは設定変更できます。

tasoh
質問者

お礼

回答ありがとうございます。 ディレクディッドブロードキャストでLAN外にできるんですね。 ですが早速試してみたのですが、やっぱり通してもらえませんでした。 ルータにはBRC-14VGを使用しているのですが、これでも設定で直せるでしょうか? また、どのあたりをどう設定すればよいか、もしご存知でしたらお願いします・・・

noname#128134
noname#128134
回答No.1

ブロードキャストはLAN の外に出ないように出来てるんじゃなかったかな。 VPN を使えば、そこは同じLAN 扱いになるから飛ばせると。 マルチキャストならLAN の外に出れるのかな? ブロードキャストしなければいけない理由(構造)があるのでしょうが、うまく回避できないものですかねぇ。 #何をどうしたいのかが分からないので、何とも言えないのですが・・・。

tasoh
質問者

お礼

回答ありがとうございます。 VPNですか、少し調べてみます。 ブロードキャストしたいのは、各端末を使用している人の現在の状況を、全員が把握できるようにするためです。 たとえば、本社以外に支社の社員の状態も把握したい・・などの理由です。 電話での取次や相談事をしたいときに席にいるかどうかなどの把握がしたいのです。

関連するQ&A

  • ブロードキャスト転送できるかはルータによりますか?

    WHR-HP-G300N ブロードキャスト転送できるかはルータによりますか? 【ポート変換】 プロトコル:UDP ポート:2304 LAN側IPアドレス:192.168.1.255 を指定すると ※LAN側ブロードキャストアドレスは使用できません となり、WAN側に届いたパケットをブロードキャストすることができません。 このようなルーターで、すべての端末へブロードキャストを行わないといけない 状況のパケット転送設定をすることは機器的に無理なのでしょうか? 方法としてあきらめるしかないですかね?

  • ブロードキャストアドレスについて

    (1) 172.24.113.201というパソコンから172.24.255.255にUDPで送信しました。 すると、172.24.113.*のパソコンはすべて受信できたのですが、172.24.111.*と172.24.112.*はどれも受信できませんでした。 (2) 172.24.113.201から172.24.111.255にUDPで送信しました。 しかし172.24.111.*はどれも受信できませんでした。 (3) 172.24.113.201から172.24.111.201にUDPで送信しました。 すると、172.24.111.201は受信できました。 ブロードキャストアドレスって、どういう風になっているんでしょう。 そのネットワークのすべてのコンピュータを表すと聞いたのですが、同じネットワーク内でしか使えないんでしょうか。 (3)が成功したので、プログラムなどの問題ではないと思うのですが。 ファイアウォールとかでもないですよね。 だれかブロードキャストアドレスについて詳しい方いませんか?

  • ブロードキャストの宛先について教えて下さい。

    ブロードキャストの宛先について教えて下さい。 パケットキャプチャ(Ethereal)でネットワーク内のパケットを見ていましたところ、ブロードキャストがもう存在しないIPアドレス宛てに送信されている事が分かりました。 このIPアドレスには、1ヶ月前までDNS及びWINSサーバーを設置していました。 送信元PCのDNS、WINSサーバー、HOSTSファイルにはこの宛先IPアドレスの記述はありません。 送信元PCのarpテーブルにも該当IPアドレスの記述はありません。 (この存在しないIPアドレスに送信しているPCは複数台あります) 又、現在運用しているDNS、WINSサーバー内にもこの宛先IPアドレスの記述はありません。 ブロードキャストする場合、送信元PCはこの存在しないIPアドレスをどこから知るんでしょうか? どこかに情報が残っているから分かるんですよね。 なにとぞ助言をいただきたく・・・。 又情報不足であればご指摘下さい。 宜しく御願い致します。

  • UDPでのブロードキャスト送信

    Linuxで下記UDPブロードキャスト送信プログラムを作ったのですが、sendto()関数の戻り値が-1となり エラーとなってしまうので送信できません。 何が悪いのでしょうか? ちなみにIPアドレスは192.168.0.1 サブネットマスクは255.255.0..0でやっています。 又、サブネットマスクを0.0.0.0で試してもみましたがダメでした。 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> int main() { int sock; struct sockaddr_in addr; int yes = 1; sock = socket(AF_INET, SOCK_DGRAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons(12345); addr.sin_addr.s_addr = inet_addr("255.255.255.255"); setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&yes, sizeof(yes)); if(sendto(sock, "HELLO", 5, 0, (struct sockaddr *)&addr, sizeof(addr))!=5) printf("send error!!\n"); close(sock); return 0; }

  • UDPパケットの分割について

    こんにちは。 現在、クライアント&サーバの通信プログラムを作成しています。 クライアントがサーバに接続しにいく際、サーバの待ち受けポートにクライアントが UDPでブロードキャストしています。 その際、クライアントの情報もUDPに乗せて、送信しています。 ここで、問題なのですが、ネットワークモニタで通信データを見てみると、 クライアントから送信するUDPデータが1500バイト?を超えると、UDPパケットの分割が行われ、 2つめのデータが、UDPではなく、IPで送信されています。 しかも、2つめのIPのパケットがサーバ側に届くケースと届かないケースがあるように見受けられます。 (環境の違いかもしれません。) 2つめのパケット破棄は破棄が起こる環境では必ず起きます。 破棄が起きない環境では一回も起こりません。 スイッチ、NIC等で、破棄することってあるのでしょうか? ネットワーク上の問題っぽいので、OSの違い(Win2K pro,Win2k advanced server) などには関係ないですよね? どなたが、ご存知の方がおられましたらご教授願います。

  • UDPプロトコルについて

    自分で調べればよいことなのでしょうが・・・ もし知っている方がいたら、教えてください。 TCP/IPでは、異なるサブネットのノードとは通信できないと思うのですが、例えば、192.168.0.0/24のネットワーク内のハブに、192.168.1.10というノードを接続してあるような場合に、192.168.0.10のホストからUDPプロトコルでブロードキャストすれば、互いに通信できるのでしょうか?

  • ネットワークのブロードキャストについて

    データ転送をおこなう際には、 宛先と送信元のIPアドレスとMACアドレスが 必要になっていて、宛先IPアドレスを取得したのちに、 ARPによって宛先MACアドレスを知る。 ARPテーブルにIPアドレスに対応するMACアドレスが ない際にはARP要求をブロードキャスト送信する。 つまり宛先MACアドレスを FF:FF:FF:FF:FF:FF(←自信ないです) として送信するのはわかっているのですが、 このようなイーサネットアドレスにした際に、 ARP要求が外部にアクセスできない理由がわからないのですが、 なぜですか??? やはりトラフィックが増大するからでしょうか? その理由がわからないのでなにとぞよろしくおねがいします。

  • ブロードキャストアドレスについて

    Life goes on http://plaza.rakuten.co.jp/junesummer/diary/200505220001/ このページに、 「★IPブロードキャスト ・Local Broadcast→送信元を同じサブネット内のみ到達できる。 例:10.1.1.1/24のホストから10.1.1.0/24へLocal Broadcast送信するときの宛先アドレスは10.1.1.254/24 」 とありますが、最後の部分は10.1.1.254ではなくて、10.1.1.255だと思うのですが違うのでしょうか?

  • 無線LANカード2枚挿し時のUDPクライアントプログラミングについて。

    LinuxのUbuntu8.04を使用しているのですが、現在無線LANカード2枚挿ししている状態で、同じネットワーク内でIPアドレスを設定しています(192.168.0.10と192.168.0.11)。UDPクライアントプログラムでパケットを送信すると、インターフェイスを勝手に選んでしまうので、任意に「こっちの無線LANカードを使う!」という指定をするためにはどのようにプログラミングすればよいでしょうか? お願いします。

  • winsockで複数のLANカードを使用するには

    winsock初心者です。 TCPまたはUDPにて1枚のLANカードで通信するプログラムはよくあるのですが 複数のLANカードで通信する場合の参考プログラムがありません。 具体的には, UDPクライアントを作成する場合,指定したLANカード(IPアドレス)に生成したsocketとリンクして通信させたいのです。 bind()のsockname.sin_addr.s_addrにてINADDR_ANYではなくカードに設定したIPアドレスを設定すればよいのでしょうか? 同じ疑問がTCPクライアント作成でもあります。 この場合bind()ではなく,connect()で送信したいカードに接続されるサーバー側のIPアドレスを指定するということでしょうか? また2枚のカードを使用する場合,同じネットワークアドレス(192.168.0.XXX)は使用しない方が良いのでしょうか?(UDPブロードキャストだと両カードで送信してしまう?) 色々調べてますがこれだという回答がみつかりません 誰かご存知でしたら御教示願います。