Estou me deparando com um problema estranho em que meu servidor agora se recusa a fazer pesquisas de DNS (usando bind). Eu uso uma caixa do CentOS como um gateway OpenVPN e forneço serviço DNS para os clientes. Por mês tudo estava funcionando bem e como pretendido, e hoje o serviço DNS não funciona mais. Nenhuma alteração foi feita na configuração ...
Este é o arquivo named.conf:
options {
# Hide bind version
version "Not shown";
# Listen only on localhost and VPN gateway IPv4
listen-on port 53 { 127.0.0.1; 10.44.3.1; };
listen-on-v6 port 53 { ::1; };
# Forward requests to Google public DNS
forwarders { 8.8.8.8; 8.8.4.4; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; crypto; };
allow-recursion { localhost; crypto; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
acl crypto{
10.44.3.0/29; // SSL VPN
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Observe a ACL: o servidor deve atender somente aos clientes da sub-rede 10.44.3.0/29 (10.44.3.1-10.44.3.6 intervalo de IP, sendo .1 o gateway). Agora, quando eu obtenho um cliente para estabelecer um túnel VPN e monitorei a resolução DNS, posso dizer que ele está sendo recusado por causa das mensagens de erro ICMP:
[root@vps50300 ~]# tcpdump -i tun0 host 10.44.3.6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
10:10:16.735977 IP 10.44.3.6.61219 > 10.44.3.1.domain: 1+ PTR? 1.3.44.10.in-addr.arpa. (40)
10:10:16.736038 IP 10.44.3.1 > 10.44.3.6: ICMP host 10.44.3.1 unreachable - admin prohibited, length 76
10:10:18.736269 IP 10.44.3.6.61220 > 10.44.3.1.domain: 2+ A? www.google.com. (32)
10:10:18.736330 IP 10.44.3.1 > 10.44.3.6: ICMP host 10.44.3.1 unreachable - admin prohibited, length 68
10:10:20.737701 IP 10.44.3.6.61221 > 10.44.3.1.domain: 3+ AAAA? www.google.com. (32)
10:10:20.737758 IP 10.44.3.1 > 10.44.3.6: ICMP host 10.44.3.1 unreachable - admin prohibited, length 68
10:10:22.738068 IP 10.44.3.6.61222 > 10.44.3.1.domain: 4+ A? www.google.com. (32)
10:10:22.738154 IP 10.44.3.1 > 10.44.3.6: ICMP host 10.44.3.1 unreachable - admin prohibited, length 68
10:10:24.737910 IP 10.44.3.6.61223 > 10.44.3.1.domain: 5+ AAAA? www.google.com. (32)
10:10:24.737965 IP 10.44.3.1 > 10.44.3.6: ICMP host 10.44.3.1 unreachable - admin prohibited, length 68
Por último, mas não menos importante, acho que meu iptable parece correto (todo o tráfego de 10.44.3.0/29 é aceito e encaminhado):
[root@vps50300 ~]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1897K 320M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
229K 14M ACCEPT icmp -- any any anywhere anywhere
10957 820K ACCEPT all -- lo any anywhere anywhere
7128 421K ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:http state NEW
7166 425K ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:https state NEW
14457 819K ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:ssh state NEW
59 2636 ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:ftp state NEW
0 0 ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:45632 state NEW
0 0 ACCEPT tcp -- venet0 any anywhere anywhere tcp dpt:45633 state NEW
16 1120 ACCEPT udp -- venet0 any anywhere anywhere udp dpt:openvpn state NEW
47288 3095K REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4062K 3220M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
43961 2562K ACCEPT all -- any any 10.44.3.0/29 anywhere
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 3107K packets, 3306M bytes)
pkts bytes target prot opt in out source destination
Mas eu ainda pareço acertar uma das regras desde que recebi a mensagem proibida de admin do ICMP?
Não sei como consertar isso, qualquer sugestão seria apreciada.