ファイアウォールの背後にあるターゲットコンピュータのスリープモード解除を実行したいと思います。対応する信号は、ポート9/udpに送信されるマジックパケットです。
私の信号は、ルーターを介して2つのイーサネットインターフェースを持つDebianサーバーに転送されます。これは "/etc/network/interfaces" ファイルです:
iface eth0 inet static (-->router)
address 192.168.0.10
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0
gateway 192.168.0.1
iface eth1 inet static (-->local lan)
address 192.168.1.10
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0</span>
これは「route -n」コマンドの結果です。
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
最後に、iptablesでdnatを作成するルールは次のとおりです。
iptables -A INPUT -p udp --dport 9 -i $RUTER_IFACE -j ACCEPT
iptables -A OUTPUT -p udp --sport 9 -d $LAN_NET -j ACCEPT
iptables -t nat -A PREROUTING -i $RUTER_IFACE -p udp --dport 9 -j DNAT --to $TARGET
iptables -A FORWARD -p udp --dport 9 -i $RUTER_IFACE -o $LAN_IFACE -j ACCEPT
まあ、トラフィックを確認した結果、マジックパケットがeth0インターフェイスに到着したことがわかりました。または、$ TARGETの値がIPアドレス(192.168.1.65など)の場合、パケットはeth0からeth1に移動して宛先コンピュータ(192.168.1.65)に到達します。ただし、$TARGET 値が IP 範囲 (例: 192.168.1.50-192.168.1.70) の場合、パケットは eth0 から eth1 に送信されず、ターゲット コンピューターに到達しません。
マジックパケットはIPではなくMACアドレスに送信されるため、IP範囲(1つのIPアドレスではない)を入力する必要があります。また、ローカル LAN 上のコンピュータには固定 IP はありません。 dnsmasqデーモン(Debianサーバー)はローカルコンピュータにIPをリースします。
まあ、問題はDebianサーバーのルーティングにあると思います。しかし、事実はどのように修正できるかわかりません。ご協力ありがとうございます。
私の英語が悪くてすみません。とても感謝しています。
答え1
あなたが達成したいのは「サブネット指向のブロードキャスト」だと思います。ここで、Wake on LAN パケットはルータの背後で実行されているすべてのデバイスに転送され、WoL パケットの情報が一致するとデバイスが起動します。
まず、サーバー/ルーター自体がWoL(ライン1)に目覚め、WoLパケット(ライン2)を送信する必要がある場合は、最初の2つのiptablesラインだけが必要です。ルーターの背後にあるホストに「外部」WoLパケットを送信したい場合は、この2行は必要ありません。
第二:WoLパケットは、ネットワーク上のすべてのコンピュータにパケットをブロードキャストする「ブロードキャストアドレス」に転送する必要があります。したがって、$TARGET
に設定する必要があります192.168.1.255
。
また、IPv4転送を有効にする必要があります。
最後のiptablesコマンドは、FORWARDチェーンにこれらのパケットをドロップするルールまたは「DROP」ポリシーがある場合にのみ必要です。