我已经应用了以下 iptables 规则,以便屏蔽通过 wlan0 的所有 wlan1 流量。
*filter
:INPUT ACCEPT [48:6144]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [47:6078]
-A INPUT -i wlan1 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i wlan1 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i wlan1 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i wlan1 -p tcp -m tcp --dport 53 -j ACCEPT
-A FORWARD -d 10.42.0.0/24 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.42.0.0/24 -i wlan1 -j ACCEPT
-A FORWARD -i wlan1 -o wlan1 -j ACCEPT
-A FORWARD -o wlan1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i wlan1 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 3 00:54:14 2015
# Generated by iptables-save v1.4.21 on Tue Mar 3 00:54:14 2015
*nat
:PREROUTING ACCEPT [1:66]
:INPUT ACCEPT [1:66]
:OUTPUT ACCEPT [10:651]
:POSTROUTING ACCEPT [10:651]
-A POSTROUTING -s 10.42.0.0/24 ! -d 10.42.0.0/24 -j MASQUERADE
COMMIT
我想要实现的是将输入接口 wlan1 中的所有 DNS 查询重定向到某个特定的 ip。
我已经累了:
iptables -t nat -A PREROUTING -i wlan1 -p udp --dport 53 -j DNAT --to MYDNSIP:53
和
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination MYDNSIP:53
但它似乎不起作用。我会很感激任何帮助
-- 欢呼
答案1
好了,经过几次尝试,我终于达到了目标。成功的关键是以下两个规则:
-A PREROUTING ! -s 10.42.0.1/32 ! -d 10.42.0.1/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 10.42.0.1:53
-A PREROUTING ! -s 10.42.0.1/32 ! -d 10.42.0.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.42.0.1:53
我希望这能帮助别人
答案2
额外示例 - 仅针对特定 IP 范围将 DNS 查询重定向到另一台服务器:
-A PREROUTING ! -s 192.168.12.3/32 ! -d 192.168.12.3/32 -p tcp -m tcp -m iprange --src-range 10.0.0.10-10.0.0.240 --dport 53 -j DNAT --to-destination 192.168.12.3:53
-A PREROUTING ! -s 192.168.12.3/32 ! -d 192.168.12.3/32 -p udp -m udp -m iprange --src-range 10.0.0.10-10.0.0.240 --dport 53 -j DNAT --to-destination 192.168.12.3:53