我有一个问题,redirect到本地DNS服务器的PC的DNS请求。 我想阻止访问除了我自己的其他DNS服务。 我发现了这样做的不同方法,没有在这里工作。 所以我一定在做错事。
很多人build议使用这个:
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 192.168.2.70:53
但在我的configuration这阻止访问DNS。 另外我无法find为什么这应该工作在第一位。 由于预发布是为了希望访问内部服务的外部用户吗?
我也尝试过指定内部局域网接口-i eth1,但是由于内部服务器也在同一个接口上,所以这是行不通的。 这将使一个循环对吗? 服务器发送端口53的数据包,网关将数据包发送回同一台服务器。
然后,我也想只允许我的内部networking上的DNS服务器联系其他外部DNS服务器。 喜欢:
iptables -A OUTPUT -p udp -s 192.168.2.70 -d 208.67.222.222 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.2.70 -d 208.67.222.220 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p udp -s 192.168.2.72 -d 208.67.222.222 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.2.72 -d 208.67.222.220 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
但我猜测OUTPUT表是不正确的。 因为从我所了解到的情况来看,INPUT和OUTPUT仅适用于本地linux路由器。
信息:
Internal dns servers: 192.168.2.70 and 192.168.2.72 External dns server: 208.67.222.220 and 208.67.222.222 LAN interface: ETH1 WAN interface: ETH0
我目前的防火墙configuration没有预先路由和转发规则,除了一个显示它如何被configuration。
#!/bin/sh -e ifconfig eth1 192.168.2.1/24 echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/tcp_syncookies #Flush table's iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -t nat -F #toestaan SSH verkeer iptables -t nat -A PREROUTING -p tcp --dport 22 -i eth0 -j DNAT --to 192.168.2.1 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #Drop traffic and accept iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT #verkeer naar buiten toe laten en nat aanzetten iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP #toestaan verkeer loopback iptables -A INPUT -i lo -j ACCEPT #toestaan lokaal netwerk iptables -A INPUT -i eth1 -j ACCEPT #accepteren established traffic iptables -A INPUT -i eth0 --match state --state RELATED,ESTABLISHED -j ACCEPT #droppen ICMP boodschappen iptables -A INPUT -p icmp -i eth0 -m limit --limit 10/minute -j ACCEPT iptables -A INPUT -p icmp -i eth0 -j REJECT #RDP forward voor windows servers iptables -t nat -A PREROUTING -p tcp --dport 3389 -i eth0 -j DNAT --to 192.168.2.73 iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
您需要将这些规则放在FORWARD链中:
iptables -A FORWARD -p udp -s 192.168.2.70 -d 208.67.222.222 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.2.70 -d 208.67.222.220 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -p udp -s 192.168.2.72 -d 208.67.222.222 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.2.72 -d 208.67.222.220 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
通过DHCP为用户提供本地DNS服务器地址,不用费心将DNSstream量redirect到本地服务器 – 如果他们使用networkingconfiguration(DNS服务器configuration)进行操作,则会失败。
我使用这些规则强制在我的DD-WRT路由器上通过dnsmasq完成所有DNS查找:
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT
这些可以存储在DD-WRT中,方法是进入pipe理 – 命令,然后在框中input并点击“保存防火墙”。