blob: 9dffb5abec1d09eb850b7c548980c18715c65899 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#!/usr/bin/env bash
#
# Bind install and cofiguration script for Bedrock Connect
# Usage: sudo scripts/install-bind.sh [BCIP] [NSIP]
# BCIP Optional IP of the bedrock connect server (Default: 104.238.130.180)
# NSIP Optional IP of the name server (Default: same as the bedrock connect server)
#
# Should support Ubuntu 18+ and Cent OS 7+
# Tested on: Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Cent OS 7 and Cent OS 8
#
#
# Configuration
#
BCIP=${1:-104.238.130.180}
NSIP=${2:-$BCIP}
#
# Functions
#
function add_domain() {
local domain=$1
shift
# Warn if exists
if [[ -n "$(cat $NAMED_ZONES | grep $domain)" ]]; then
echo "Warning: Domain $domain already exists, skipping..."
return
fi
# Create zone file
echo "@ IN SOA $domain. admin.$domain. (
2014030801 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ 300 NS ns.$domain.
ns 300 IN A $NSIP" > $NAMED_DBS/db.$domain
while [[ -n "$1" ]]; do
echo "$1 300 IN A $BCIP" >> $NAMED_DBS/db.$domain
shift
done
# Add zone config to named
echo "zone \"$domain\" IN {
type master;
file \"db.$domain\";
allow-query { any; };
};
" >> $NAMED_ZONES
}
#
# Main
#
if [[ "$(whoami)" != "root" ]]; then
echo "Error: This script need to be ran as root (or using sudo)."
exit 1
fi
# Check OS
if [[ -f /etc/os-release ]]; then
source /etc/os-release
if [[ "$ID" == "ubuntu" || "$ID_LIKE" == "ubuntu" ]]; then
PKG_MGR=apt
PKG_MGR_SYNTAX="install"
PKGS="bind9 dnsutils"
NAMED_OPTIONS="/etc/bind/named.conf.options"
NAMED_ZONES="/etc/bind/named.conf.local"
NAMED_DBS="/var/cache/bind"
SERVICE_NAME="bind9"
elif [[ "$ID" == "centos" ]]; then
PKG_MGR=yum
PKG_MGR_SYNTAX="install"
PKGS="bind bind-utils"
NAMED_OPTIONS="/etc/named.conf"
NAMED_ZONES="/etc/named.conf"
NAMED_DBS="/var/named"
SERVICE_NAME="named"
elif [[ "$ID" == "arch" ]]; then
PKG_MGR=pacman
PKG_MGR_SYNTAX="-S"
PKGS="bind"
NAMED_OPTIONS="/etc/named.conf"
NAMED_ZONES="/etc/named.conf"
NAMED_DBS="/var/named"
SERVICE_NAME="named"
elif [[ "$ID" == "debian" ]]; then
PKG_MGR=apt
PKG_MGR_SYNTAX="install"
PKGS="bind9 dnsutils"
NAMED_OPTIONS="/etc/bind/named.conf.options"
NAMED_ZONES="/etc/bind/named.conf.local"
NAMED_DBS="/var/cache/bind"
SERVICE_NAME="named"
else
echo "Unsupported OS"
exit 2
fi
else
echo "Unsupported OS"
exit 2
fi
# Install
$PKG_MGR $PKG_MGR_SYNTAX -y $PKGS
# Configure
sed -i '/recursion/d' $NAMED_OPTIONS
sed -i '/additional-from-cache/d' $NAMED_OPTIONS
sed -i 's/^options {/options {\n\trecursion no;\n\tadditional-from-cache no;/' $NAMED_OPTIONS
add_domain hivebedrock.network @ geo
add_domain mineplex.com mco
add_domain inpvp.net play
add_domain lbsg.net mco
add_domain cubecraft.net mco
add_domain galaxite.net play
add_domain pixelparadise.gg play
# Reload config
systemctl reload $SERVICE_NAME
|