IP アドレスをエイリアスして、異なる IP ネットワークから DLNA リソースにアクセスできるようにする方法

IP アドレスをエイリアスして、異なる IP ネットワークから DLNA リソースにアクセスできるようにする方法

私が持っているもの

私は、DLNA リソース 192.168.1.100 を持つホーム Wi-Fi ネットワーク 192.168.1.0/24 を持っています。
イーサネット付きのテレビと、Wi-Fi とイーサネットの両方のインターフェイスを備えたネットブックを持っています。
ノートブックをルーターのように動作させたいのです。つまり、ホーム ネットワークを Wi-Fi 経由で取得し、イーサネット インターフェイスを介してテレビに転送するということです。

私が欲しいもの

ホームネットワーク内の DLNA リソースをテレビに認識させたいです。

私がしたこと

次のサブネットを持つネットブックの eth0 インターフェイスに DHCP サーバーをセットアップしました。

subnet 10.0.0.1 netmask 255.255.255.0 {
  range 10.0.0.5 10.0.0.10;
  option routers 10.0.0.1;
}

私はネットブックの eth0 インターフェイスを次のように設定しました:

ifconfig eth0 10.0.0.1/24 

転送を有効にしました:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables に転送ルールを追加しました:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

現在、テレビは 10.0.0.5 の IP アドレスを取得し、インターネットを閲覧できますが、テレビは DLNA リソースを見つけることができません。

質問

リソースの検出は 10.0.0.1/24 のみで行われるため、テレビは 192.168.1.100 のリソースを見つけることができません。192.168.1.100 を 10.0.0.10 のようなエイリアスにするにはどうしたらよいか教えてください。

答え1

DLNA はブロードキャストのみです。そのため、10.0.0.0/24 ネットワークから 192.168.1.0/24 ネットワークにブロードキャスト パケットをルーティングすることはできません。

したがって、最善のアプローチは、ルーティングをまったく行わず、代わりにノートブックをブリッジとして使用し、DLNA リソースとテレビを同じネットワークに配置することです。手順は次のとおりです。

  1. ノートブックからDHCPサーバーとIPテーブルルールを削除する
  2. ノートブックのインターフェースをブリッジします。これを行う方法はディストリビューションによって異なります。ここでは debian/ubuntu 構文を示しますので、お使いのディストリビューションに合わせて調整してください。

これは/etc/network/interfaces

auto lo br0 

iface lo inet loopback

iface br0 inet static
    bridge_ports eth0 wlan0
    address 192.168.1.x
    netmask 255.255.255.0

x現在のラップトップの IP アドレスに置き換えます。

3) テレビをDHCPを使用するように設定する

それで十分でしょう。ブリッジは、テレビからラップトップへの有線接続と、ラップトップからネットワークの残りの部分への Wi-Fi 接続を結合します。ブリッジであるため、DLNA ブロードキャストはブリッジを介して転送され、応答が返されます。

また、ブリッジングは、テレビからの DHCP ブロードキャストもラップトップを通過することを意味します。そのため、別の DHCP サーバーは必要なく、ホーム ネットワーク上の DHCP サーバーを使用できます。

答え2

DHCP オプションに DNS サーバーを追加してみてください。テレビにはドメイン名など他のものも必要になる場合があります。テレビが他のルーターで動作している場合は、DHCP 監視ツール (すぐにはわかりません) を調べて、DHCP サーバーがどのようなオプションを提供しているかを確認し、自分の構成でそれを模倣します。

また、そうしましたかecho 1 > /proc/sys/net/ipv4/ip_forward?

3 番目に、rangeスタンザが実際に のように見える場合はrange 10.0.05 10.0.0.10、おそらく に変更する必要がありますrange 10.0.0.5 10.0.0.10

さて、少し調べてみたところ、DLNA は検出プロトコルとして SSDP を使用しているようです。Wikipedia の「Simple Service Discovery Protocol」ページから引用します。

SSDP は、HTTPU に基づくテキストベースのプロトコルです。基盤となるトランスポート プロトコルとして、ユーザー データグラム プロトコル (UDP) を使用します。サービスは、ポート番号 1900 で指定された IP マルチキャスト アドレスにマルチキャスト アドレス指定してホスティング システムによってアナウンスされます。IPv4 では、マルチキャスト アドレスは 239.255.255.250[3] であり、SSDP over IPv6 では、X で示されるすべてのスコープ範囲に対してアドレス セット ff0X::c を使用します。[4]

Linux 上のマルチキャスト トラフィックについてはあまり経験がありませんが、これを機能させるには、マルチキャスト トラフィックの受信と転送を有効にする必要があるようです。

関連情報