在我的Ubuntu服务器中,有一些传出的TCP DNS请求,我无法控制它们被Unbound on 127.0.0.1:53解决,它使用208.67.222.222来解决所有问题,我看到这些TCP DNS数据包最终从我的公共IP地址转移到著名的DNS服务器,如8.8.8.8和1.1.1.1。
ipset -N myipset iphash
ipset -A myipset 127.0.0.1
ipset -A myipset 208.67.222.222
iptables -t nat -D OUTPUT -m udp -p udp --dport 53 -m set ! --match-set myipset -j DNAT --to 127.0.0.1:53
iptables -t nat -D OUTPUT -m tcp -p tcp --dport 53 -m set ! --match-set myipset -j DNAT --to 127.0.0.1:53我之所以使用输出,是因为我相信PREROUTING不会影响它们,因为它们是本地生成的,并且是在它们被发送出去之前重定向的。但是,当我为那些TCP数据包运行这些命令DNS时,根本不起作用,但是使用using的dnslookup -vc是有效的。
我应该做些特别的事情让这些规则起作用吗?我错过了什么吗?也许更多的sysctl.conf的东西?
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.all.route_localnet = 1
net.ipv4.conf.ens3.route_localnet = 1server:
port: 53
cache-min-ttl: 600
rrset-cache-size: 64m
msg-cache-size: 32m
prefetch: yes
serve-expired: yes
serve-expired-ttl: 86400
do-not-query-localhost: no
tcp-upstream: yes
outgoing-num-tcp: 2000
incoming-num-tcp: 2000
remote-control:
control-enable: yes
forward-zone:
name: "."
forward-addr: 208.67.222.222未绑定正在TCP和UDP端口53上运行。
发布于 2022-10-23 00:07:10
一个愚蠢的错误。iptables规则没问题。问题在于unbound的S配置(实际上我不知道它是如何工作的!),我也不得不添加access-control,所以它接受来自服务器公共IP地址的TCP请求:
server:
...
access-control: <server public ip address>/24 allow_snoop然后重新启动unbound。到目前为止还不错。
https://serverfault.com/questions/1113769
复制相似问题