web-dev-qa-db-ja.com

ポートを開いてリダイレクトする

ルーターにSNMPを設定して、オフサイトサーバー上の既存のNagiosインストールからルーターを監視できるようにしようとしています。いくつかの異なるiptablesルールを試したにもかかわらず、ルーターがWANからのSNMP要求に応答するのに問題があります。ルーターは新しいASUSRT-AC66Uで、AsusWRT 3.0.0.4.270.26(Merlinビルド)を実行しています。

私はごく最近、残念ながらISPとしてComcastに切り替えることを余儀なくされました。彼らは、ネットワーク全体でポート161と162をブロックしていると言っています。それを考慮して、1610を161にリダイレクトしようとしています。現在、NAS用にポートフォワーディングを設定しています(1611-> 161)。SNMPはそこで正常に機能します。

私が最初に試したのは、1610-> 127.0.0.1:161(UDP)からのポート転送ルールを設定することでしたが、これは機能していないようです。

[ssube@centos-server ~]$ snmpwalk -v 2c -c [name] [ip]:1610
Timeout: No Response from [ip]:1610

[ssube@centos-server ~]$ snmpwalk -v 2c -c [name] [ip]:1611
SNMPv2-MIB::sysDescr.0 = STRING: Linux Triton 2.6.32.12 #2668 Tue Dec 11 12:36:30 CST 2012 armv5tel
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10

上記のように、NASルールは正常に機能しています。NASルールを削除し、すべてのルータールールで1610を1611に置き換えることはできませんでした。エラーメッセージ(応答なし)は、何を試しても一貫しています。

私の2番目の試みは、iptables自体を調べることでした。次のルールを設定しました。

boss@RT-AC66U:/jffs/scripts# cat firewall-start
#!/bin/sh

iptables -I INPUT 1 -p udp --dport 1610 -j ACCEPT
boss@RT-AC66U:/jffs/scripts# cat nat-start
#!/bin/sh

iptables -t nat -A PREROUTING -p udp --dport 1610 -j REDIRECT --to-port 161

LAN内から、ルーターを問題なく見ることができます。

ssube@KRAKEN /c/Program Files/ConEmu > snmpwalk -v 2c -c [name] 192.168.1.1:1610
SNMPv2-MIB::sysDescr.0 = STRING: Linux RT-AC66U 2.6.22.19 #1 Sun Mar 17 17:16:27 EDT 2013 mips
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10

ただし、INPUTチェーンルールの有無にかかわらず、LANの外部からはまだ表示されません。両方のルールがiptablesに表示されます。

boss@RT-AC66U:/tmp/home/root# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
.....
ACCEPT     udp  --  anywhere             anywhere            udp dpt:1610

(DROPルールの前、いくつかの無関係なACCEPTの後にリストされています)

boss@RT-AC66U:/jffs/scripts# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
VSERVER    all  --  anywhere             [ip].comcast.net
REDIRECT   udp  --  anywhere             anywhere            udp dpt:1610 redir ports 161

それでも、外部SNMPはうまくいきません。パケットが入っているかどうかを確認するためにtcpdumpを試しましたが、ルーターでtcpdumpを実行すると、数秒以内にWi-Fiが起動するようで、ルーターに接続して実行する機会がありませんでした。まだそこにあります(私がそうするとき、更新で編集します)。

ルールが表示されるため、スクリプトは機能しているようです。問題はルールにあると思われますが、それを特定するのに苦労しており、ファームウェアメッセージボードでまだ応答を取得していません。

3
ssube

[WAN IP]:1610から[LAN IP]:161へのストレートポートフォワードを実行しようとしているようです。これらの3つのルールはこれを達成する必要があります:

# forwards port 1610 -> 611
$ iptables -t nat -A PREROUTING -p tcp -d [LAN IP] --dport 1610 -j DNAT --to [LAN IP]:611

注:[LAN IP]は内部サーバーのIPアドレスになります。

# Allow 1610 traffic
iptables -A INPUT -i eth0 -p tcp --dport 1610 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 1610 -m state --state ESTABLISHED -j ACCEPT
1
slm