使用iptables转发DNS请求

OpenWrt路由器上的SmartDNS提供DNS服务,侦听端口为6053,Windows不能指定DNS端口号所以试着用一台内网Ubuntu虚拟机转发DNS请求.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
DNS_server="192.168.1.1"
DNS_port="6053"

iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination ${DNS_server}:${DNS_port}
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to-destination ${DNS_server}:${DNS_port}

iptables -t nat -A POSTROUTING -p udp -d ${DNS_server} --dport ${DNS_port} -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -d ${DNS_server} --dport ${DNS_port} -j MASQUERADE

iptables -I FORWARD -d ${DNS_server} -p udp --dport ${DNS_port} -j ACCEPT
iptables -I FORWARD -s ${DNS_server} -p udp --sport ${DNS_port} -j ACCEPT

iptables -I FORWARD -d ${DNS_server} -p tcp --dport ${DNS_port} -j ACCEPT
iptables -I FORWARD -s ${DNS_server} -p tcp --sport ${DNS_port} -j ACCEPT