
私が持っているもの
私は、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 リソースとテレビを同じネットワークに配置することです。手順は次のとおりです。
- ノートブックからDHCPサーバーとIPテーブルルールを削除する
- ノートブックのインターフェースをブリッジします。これを行う方法はディストリビューションによって異なります。ここでは 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 上のマルチキャスト トラフィックについてはあまり経験がありませんが、これを機能させるには、マルチキャスト トラフィックの受信と転送を有効にする必要があるようです。