Pychol

Auto DNS setup

Oct 11th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.69 KB | None | 0 0
  1. #!/bin/bash
  2. # Update the metadata of the yum repository.
  3. yum update -y
  4. # Configure a domain name for your system.
  5. host_name=$(hostname | awk -F”.” ‘{print $1})
  6. echo ‘Enter a new domain name for your system: ‘
  7. read -r “domain_name”
  8. hostnamectl — static set-hostname “${host_name}.$domain_name
  9. fqdomain_name=$(hostname)
  10. # Assign the configuration files to variables.
  11. named_file=”/etc/named.conf”
  12. forward_file=”/var/named/forward.$domain_name
  13. reverse_file=”/var/named/reverse.$domain_name
  14. # List the available network interfaces.
  15. net_int=$(ip -o link show | awk -F’: ‘ ‘{print $2})
  16. echo $net_int
  17. echo ‘Enter the network interface to configure the DNS server with: ‘
  18. read -r “net_int_name”
  19. # Assign IP addresses to variables.
  20. net_int_ip=$(ifconfig $net_int_name | awk -F’ ‘ ‘FNR == 2 {print $2})
  21. echo${net_int_ip} ${fqdomain_name}>> /etc/hosts
  22. oct_1=$(expr $net_int_ip | cut -d”.” -f1)
  23. oct_2=$(expr $net_int_ip | cut -d”.” -f2)
  24. oct_3=$(expr $net_int_ip | cut -d”.” -f3)
  25. oct_4=$(expr $net_int_ip | cut -d”.” -f4)
  26. first_3_oct_reverse=”${oct_3}.${oct_2}.${oct_1}
  27. desktop_ip=”${oct_1}.${oct_2}.${oct_3}.$(expr $oct_41)
  28. # Install the packages for the DNS server.
  29. yum install -y bind bind-utils
  30. # Configure the “named” server configuration file with the IP address at line 13.
  31. sed -i “13s/^\(.\{32\}\)/\1$net_int_ip; /$named_file
  32. # Enable a firewall rule that permits DNS traffic.
  33. firewall_array=(‘ — add-port=53/tcp — permanent — zone=public’ ‘ — add-port=53/udp — permanent — zone=public’ ‘ — reload’ ‘ — list-all’)
  34. for i in ${firewall_array[@]}
  35. do
  36.  firewall-cmd $i
  37. done
  38. # Enable, start and verify the status of the “named” server.
  39. named_array=(enable’ ‘start’ ‘ — no-pager status’)
  40. for i in ${named_array[@]}
  41. do
  42.  systemctl $i named
  43. done
  44. # Configure a primary zone for the DNS server.
  45. # Insert 12 blank lines at line 59.
  46. sed -i ‘59s/^/\n\n\n\n\n\n\n\n\n\n\n\n/$named_file
  47. # Insert ‘zone “[domain name]” IN {‘ at line 59
  48. sed -i ‘59s/^/” IN {/$named_file
  49. sed -i “59s/^/$domain_name/$named_file
  50. sed -i ‘59s/^/zone “/$named_file
  51. # Insert ‘ type master;’ at line 60
  52. sed -i ‘60s/^/\t type master;/$named_file
  53. # Insert ‘ file “forward.[domain name]”;’ at line 61
  54. sed -i ‘61s/^/”;/$named_file
  55. sed -i “61s/^/$domain_name/$named_file
  56. sed -i ‘61s/^/ \t file “forward./$named_file
  57. # Insert ‘ allow-update { none; };’ at line 62
  58. sed -i ‘62s/^/ \t allow-update { none; };/$named_file
  59. # Insert ‘};’ at line 63
  60. sed -i ‘63s/^/};/$named_file
  61. # Configure a reverse lookup zone for the DNS server.
  62. # Insert ‘zone “[first 3 octets of IP address in reverse].in-addr.arpa” IN {‘ at line 65
  63. sed -i ‘65s/^/.in-addr.arpa” IN {/$named_file
  64. sed -i “65s/^/$first_3_oct_reverse/$named_file
  65. sed -i ‘65s/^/zone “/$named_file
  66. # Insert ‘ type master;’ at line 66.
  67. sed -i ‘66s/^/\t type master;/$named_file
  68. # Insert ‘ file “reverse.[domain name]”;’ at line 67.
  69. sed -i ‘67s/^/”;/$named_file
  70. sed -i “67s/^/$domain_name/$named_file
  71. sed -i ‘67s/^/ \t file “reverse./$named_file
  72. # Insert ‘ allow-update { none; };’ at line 68.
  73. sed -i ‘68s/^/ \t allow-update { none; };/$named_file
  74. # Insert ‘};’ at line 69.
  75. sed -i ‘69s/^/};/$named_file
  76. # Configure the DNS server’s forward zone file.
  77. cp /var/named/named.localhost $forward_file
  78. # Edit line 2 as “@ IN SOA [domain name]. root.[domain name]. (“
  79. sed -i -e “2s/@ rname.invalid/${domain_name}. root.$domain_name/$forward_file
  80. # Remove the last 3 lines of the forward zone file.
  81. for i in $(seq 1 3)
  82. do
  83.  sed -i$d$forward_file
  84. done
  85. # Add DNS records to the end of the forward zone line.
  86. echo
  87. @ IN NS $domain_name.
  88. @ IN A $net_int_ip
  89. server IN A $net_int_ip
  90. host IN A $net_int_ip
  91. desktop IN A $desktop_ip
  92. client IN A $desktop_ip>> $forward_file
  93. # Configure the reverse zone file.
  94. cp $forward_file $reverse_file
  95. # Edit line 10 as “@ IN PTR [domain name].”
  96. sed -i -e “10s/A/PTR/;10s/${net_int_ip}/${domain_name}./$reverse_file
  97. # Add PTR records to the end of the reverse zone file.
  98. echo11 IN PTR server.$domain_name.
  99. 10 IN PTR desktop.$domain_name.” >> $reverse_file
  100. # Configure the ownership of the forward and reverse zone files.
  101. chown root:named $forward_file
  102. chown root:named $reverse_file
  103. # Verify the validity of the DNS server’s configuration files.
  104. named-checkconf -z $named_file
  105. named-checkzone forward $forward_file
  106. named-checkzone reverse $reverse_file
  107. # Restart the DNS server.
  108. systemctl restart named
Add Comment
Please, Sign In to add comment