dd-wrtのiptablesを介して外部プロキシを介してローカル以外のすべてのトラフィックをリダイレクトする方法は?

dd-wrtのiptablesを介して外部プロキシを介してローカル以外のすべてのトラフィックをリダイレクトする方法は?

dd-wrtを持つルーターがあります。外部プロキシを介してすべてのトラフィックを転送するためにファイアウォールを実行します。ローカルIPをリダイレクトし、プロキシがIpsを許可していないため、ルーターのWeb管理にアクセスできないことを除いて、これはうまく機能します。

私が実行しているファイアウォールは次のとおりです。

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 218.108.168.73:82 
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 218.108.168.73:82 

私のルーターIPにアクセスするには何を追加できますか?

答え1

! -s or -d以下を使用して、特定のIP/ネットワークを除外できます。

iptablesの人々から

[!] -s, --source address[/mask][,...]
     Source specification. Address can be either a network name, a hostname,  a
     network  IP address (with /mask), or a plain IP address. Hostnames will be
     resolved once only, before the rule is submitted to  the  kernel.   Please
     note  that  specifying any name to be resolved with a remote query such as
     DNS is a really bad idea.  The mask can be either  a  network  mask  or  a
     plain number, specifying the number of 1's at the left side of the network
     mask.  Thus, a mask of 24 is equivalent to 255.255.255.0.  A "!"  argument
     before  the  address  specification  inverts the sense of the address. The
     flag --src is an alias for this option.  Multiple addresses can be  speciâ
     fied,  but  this  will  expand to multiple rules (when adding with -A), or
     will cause multiple rules to be deleted (with -D).

[!] -d, --destination address[/mask][,...]
     Destination specification.  See the description of the  -s  (source)  flag
     for  a detailed description of the syntax.  The flag --dst is an alias for
     this option

したがって、ルールは特定のIPを除外する必要があります。

iptables -t nat -A PREROUTING -i br0 '!' -d IPAddrOfyourRouter/32 -p tcp --dport 80 -j DNAT --to 218.108.168.73:82 

答え2

このような要請をする人がたくさん見えます。

ユースケース: 特定のポート上のすべてのトラフィックを特定のIPに転送できる必要があります。

解決策

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat  -F
iptables -t nat -A PREROUTING -p tcp --dport 5432 -j DNAT --to-destination 10.21.33.61:5432
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -L -n

新しいユースケース:特定のポート上のすべてのトラフィックを特定のIPに転送し、1つのIPを除外できる必要があります。

解決策

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat  -F
iptables -t nat -A PREROUTING '!' -s 10.21.33.61/32 -p tcp --dport 5432 -j DNAT --to 10.21.33.61:5432
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -L -n

ここで:

  1. 10.21.33.61/32転送から除外する IP です。
  2. 10.21.33.61:5432トラフィックを転送したいIP:ポート。
  3. 5432トラフィックを転送するポートです。
  4. '!' -sソースを除外するために使用されます。

関連情報