OpenWRT 14.07、バリアブレーカーを実行しているルーターを使用して、自動wake-on-lanセットアップをセットアップしようとしています。私の考えでは、ルーターはウェイクアップしたいホストへの接続試行を監視し、そのようなイベントを登録すると、魔法のパケットを送信してホストをウェイクアップします。私はiptablesを使用してこれを実行し、そのような接続の試行をログファイルに書き込んでいます。ログファイルは別のスクリプトから確認できます。 iptablesの場合、私はこのルールに到達しました:
iptables -I FORWARD 1 -d 192.168.1.20 -p tcp -j LOG --log-prefix "WAKE_UP_EVENT"
192.168.1.20は、ウェイクアップしたいホストの固定IPです。次に、bashスクリプトでlogread
を使用してログを監視し、WAKE_UP_EVENT
が見つかった場合はマジックパケットを送信できます。とにかくそのようなもの。
これは、ホームネットワークの外部(インターネットなど)のクライアントからSSHを使用して接続しようとすると正常に機能しますが、ホームネットワーク内のホストと同じサブネット上のクライアントでは機能しません。私が正しく理解している場合、これの理由は、FORWARDルールがiptablesを「通過」するすべてのパケットに対するものであるためですが、この場合、パケットは同じネットワーク内にとどまり、iptablesとは(?)接触しません。
したがって、2つの質問:
1)私の行動の理解は正しいですか?
2)iptablesを使用するか、別の方法で、私がやろうとしていることを達成する方法はありますか?
私はこれを4時間機能させようと試みましたが、役に立たず、役立つ情報も見つかりませんでした。誰かが私にいくつかの有用な入力を与えることができることを願っています。前もって感謝します!
デフォルトでは、ブリッジされたトラフィックはiptablesにヒットしません。 /etc/sysctl.conf
で有効にできます。
# disable bridge firewalling by default
net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=1
次に、設定をリロードします。
sysctl -p