web-dev-qa-db-ja.com

iptablesがログに記録されないWANトラフィック?

私の最終的な目標を述べることから始めましょう:トラフィックが特定のIPアドレスに到着したとき、サーバーがオンになっていない場合は、Wake OnLanでオンにします。ビルドr30709でインストールされたDD-WRTを備えたTP-LinkArcher C7v2ルーターを使用しています。

  • WOLは機能します
  • ポートでのLANトラフィックのロギングは機能します(iptablesルールを介して)
  • スクリプトからサーバーにpingを実行して、カスタムログエントリの解析後にオンになっているかどうかを確認します
  • スクリプトからWOL作品を送信する
  • ロギングWANトラフィックは機能します[〜#〜] not [〜#〜]機能します(iptablesルールを介して)

DD-WRTについて私が見たところ、多くの人がそのようなことをするときにVLANを作成しているようです。私のルーターはAtherosベースであり、DD-WRTはおそらくAtherosルーターのVLANをサポートしていませんが、多くの人がこのルーターで動作しているようです(オンラインで指示を投稿していません)。

そのため、私は現在、サーバーが独自のVLANに接続されているルーターにポートを設定する方法を研究していますが、これまでのところ運がありません。

これが私の2つのiptablesルールです:

#this works
iptables -I FORWARD -i br0 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX LAN Connection "

# this does not work 
iptables -I FORWARD -i eth0 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX WAN Connection "

# this does not work either (dd-wrt.com says vlan2 is the WAN interface)
iptables -I FORWARD -i vlan2 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX WAN Connection "

これはiptablesだけで修正できるものですか? iptablesに、そのポートでの着信WAN接続を/ var/log/messagesに記録させることができないため。独自のVLAN上にないため、ログに書き込んでいないと想定しました。

更新1

eth0の代わりにvlan2を使用しようとしましたが、同じ結果であることに注意してください:ログのnada。両方のルールで-i <interface>をすべて一緒に削除しましたが、WANトラフィックでは何も削除しませんでした。

root@DD-WRT:~# ip a
root@DD-WRT:~# ip ro
default via pu.bl.ic.1 dev eth0
pu.bl.ic.0/24 dev eth0  proto kernel  scope link  src pu.bl.ic.ip
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1

DD-WRTのWebサイトによると、vlan2はWANの論理インターフェイスを表すことになっています。

アップデート2

宛先IPが正しくないことに気づきました。 192.168.1.2に行くはずですが、192.168.0.10に行きます。これは有効なLANではありません。

Oct  4 20:47:35 DD-WRT kern.warn kernel: [114429.460000] PLEX LAN Connection IN=br0 OUT=eth0 MAC=XXXXXXXXXXXXXXXXXXX SRC=192.168.1.133 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=45163 DF PROTO=TCP SPT=4644

以下の提案ごとの唯一のルールとしてこれを試しました:

iptables -A FORWARD -p tcp --dport 32400 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"

ログにはまだ何もありません。 LAN接続のロギングも停止しました。

アップデート

root@DD-WRT:/tmp/var/log# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 2742 packets, 395K bytes)
 pkts bytes target     prot opt in     out     source               destination
   13   764 DNAT       tcp  --  *      *       0.0.0.0/0            pu.bl.ic.ip       tcp dpt:14619 to:192.168.1.2:32400
    0     0 DNAT       icmp --  *      *       0.0.0.0/0            pu.bl.ic.ip       to:192.168.1.1
    4   232 DNAT       tcp  --  *      *       0.0.0.0/0            pu.bl.ic.ip       tcp dpt:22709 to:192.168.1.2:32400
  220 19942 TRIGGER    0    --  *      *       0.0.0.0/0            pu.bl.ic.ip       TRIGGER type:dnat match:0 relate:0

Chain INPUT (policy ACCEPT 30145 packets, 2802K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 253 packets, 21491 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 260 packets, 21863 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1065 67674 SNAT       0    --  *      eth0    192.168.1.0/24       0.0.0.0/0           to:pu.bl.ic.ip
   10   624 MASQUERADE  0    --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x80000000/0x80000000
1
Nathan

スーパーユーザーにコメントを追加できないので、それが答えです。 LANまたはWAN)からアクセスするものは何でも、サービスが機能していることを確認できますか?

Iptablesスクリプトを使用しますか、それともbashでコマンドを個別に実行しますか? Cyber​​nardが言ったように、iptablesスクリプトがない場合は、LOG行がACCEPT行の前にあることを確認する必要があります。

パケットが受け入れられるかドロップされると、パケットはチェーンを離れるので、チェーンの後半にあるログルールと一致することはありません。

たとえば、LOGルールをFORWARDチェーンの最初のルールとして挿入するには:

iptables -I FORWARD 1 -p tcp --dport 32400 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"
1
Sanael

WANインターフェイスのIPはpre natになるので、パケットが転送されてもルーターがターゲットになる可能性があることに注意してください。これは私が行うことです。

iptables -I INPUT -p any -i <wan interface> -j LOG --log-prefix "FIREWALL-WAN"
iptables -I FORWARD -p any -i <wan interface> -j LOG --log-prefix "FIREWALL-WAN"

ここで、WANIPとのインターフェースです。通常、私はWANトラフィックをドロップしてから、必要なものを許可するだけなので、実際にはこれを行いません。

0
Pere Noel