我有一个带 dd-wrt 的路由器。我运行了一个防火墙来引导所有流量通过外部代理。它工作得很好,除了它还重定向本地 Ips 而我的代理不允许 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
这里:
10.21.33.61/32
是我们要从转发中排除的 IP。10.21.33.61:5432
是我们要将流量转发到的 IP:端口5432
是您要转发流量的端口。'!' -s
用于排除来源。