以下は、uciの設定と作成されるルールです。
uci add firewall redirect
uci set firewall.@redirect[-1].target=DNAT
uci set firewall.@redirect[-1].proto=tcp
uci set firewall.@redirect[-1].src=wan
uci set firewall.@redirect[-1].src_dport=80
uci set firewall.@redirect[-1].dest=lan
uci set firewall.@redirect[-1].dest_port=80
uci set firewall.@redirect[-1].dest_ip=10.0.0.10
uci commit firewall
<reboot>
iptables -t nat -A zone_wan_prerouting -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.10:80
iptables -t nat -D zone_lan_prerouting -p tcp -s 10.0.0.0/255.0.0.0 -d <external_ip_of_router> -m tcp --dport 80 -j DNAT --to-destination 10.0.0.10:80
iptables -t nat -A zone_lan_prerouting -p tcp -s 10.0.0.0/255.0.0.0 -d <external_ip_of_router> -m tcp --dport 80 -j DNAT --to-destination 10.0.0.10:80
iptables -t nat -D zone_lan_postrouting -p tcp -s 10.0.0.0/255.0.0.0 -d 10.0.0.10 -m tcp --dport 80 -j SNAT --to-source 10.0.0.1
iptables -t nat -A zone_lan_postrouting -p tcp -s 10.0.0.0/255.0.0.0 -d 10.0.0.10 -m tcp --dport 80 -j SNAT --to-source 10.0.0.1
しかし、これはうまくいきません。
(iptablesコマンドを取得するには、configのfw3 -4 print
前後に使用します。)uci
diff
リダイレクトは、上記のリストからルール#1と#5を手動で入力した場合にのみ(最初にuci設定を消去して-s 10.0.0.0/255.0.0.0
ルール#5を削除した場合にのみ機能し始めました)。
ただし、次のuci構成は有効です。
uci add firewall redirect
uci set firewall.@redirect[-1].target=DNAT
uci set firewall.@redirect[-1].proto=tcp
uci set firewall.@redirect[-1].src=wan
uci set firewall.@redirect[-1].src_dport=5000
uci set firewall.@redirect[-1].dest=lan
uci set firewall.@redirect[-1].dest_port=22
uci set firewall.@redirect[-1].dest_ip=10.0.0.2
uci commit firewall
これをどのように説明しますか?