#!/bin/bash ######系統配合 #下載ISO檔 #https://ftp.ubuntu-tw.org/ubuntu-releases/26.04.1/ 安裝 ######鄭亮星 jls@mail.jls.idv.tw , jls550225@gmail.com , jls@acfs.tw ##設定DNS ETH0=$(ls /proc/net/dev_snmp6 |awk '{ print $1 }' |sed -n '1p') IP=$(ifconfig $ETH0 |grep 'inet ' |awk '{print $2}') HOST=$(/bin/hostname -s) HOSTNAME=$(/bin/hostname) DOMAINNAME=$(/bin/hostname -d) sync #########DNS正解 DATE=$(date "+%Y%m%d%H") cp -arf /etc/bind/named.conf.root-hints /etc/bind/named.conf.root-hints-$DATE cat >> /etc/bind/named.conf.root-hints << EOF zone "$DOMAINNAME"{ type master; file "/etc/bind/$DOMAINNAME"; allow-update { none; }; }; EOF cat > /etc/bind/$DOMAINNAME << EOF \$TTL 1D @ IN SOA $HOSTNAME. hostmaster.$HOSTNAME. ( $DATE ; serial 1H ; refresh 15M ; retry 14D ; expire 12H ; default_ttl ) @ IN NS $HOSTNAME. @ IN MX 5 $DOMAINNAME. @ IN MX 10 mail.$DOMAINNAME. @ IN MX 15 $HOSTNAME. @ IN A $IP @ IN TXT "v=spf1 a mx ip4:$IP include:_spf.google.com -all" $DOMAINNAME. IN A $IP $HOST IN A $IP www IN A $IP mail IN A $IP mail IN TXT "v=spf1 a mx ip4:$IP include:_spf.google.com -all" ftp IN A $IP webmail IN A $IP postfix IN A $IP bandwidthd IN A $IP mrtg IN A $IP EOF #####DNS 反解 EXT_IF="$ETH0" netinfo () { IP="" MASK="" NET="" for NIC in "$@" ; do { IP=$(ifconfig $NIC |grep 'inet ' |awk '{print $2}') MASK=$(ifconfig $NIC |grep 'inet ' |awk '{print $4}') BCAST=$(ifconfig $NIC |grep 'inet ' |awk '{print $6}') IP1=$(echo $IP |awk -F'.' '{print $1}') if [ "$IP1" = "" ]; then echo "" echo "Warning: there is no IP found on $NIC." echo "Action is aborted." echo "Please make sure the interface is setup properly, then try again." echo "" exit 1 else IP2=$(echo $IP |awk -F'.' '{print $2}') IP3=$(echo $IP |awk -F'.' '{print $3}') IP4=$(echo $IP |awk -F'.' '{print $4}') MASK1=$(echo $MASK |awk -F'.' '{print $1}') MASK2=$(echo $MASK |awk -F'.' '{print $2}') MASK3=$(echo $MASK |awk -F'.' '{print $3}') MASK4=$(echo $MASK |awk -F'.' '{print $4}') BCAST1=$(echo $BCAST |awk -F'.' '{print $1}') BCAST2=$(echo $BCAST |awk -F'.' '{print $2}') BCAST3=$(echo $BCAST |awk -F'.' '{print $3}') BCAST4=$(echo $BCAST |awk -F'.' '{print $4}') let NET1="$IP1 & $MASK1" let NET2="$IP2 & $MASK2" let NET3="$IP3 & $MASK3" let NET4="$IP4 & $MASK4" NET="$NET1.$NET2.$NET3.$NET4" fi } done } DoMainName="$DOMAINNAME" netinfo "$EXT_IF" revZone="$IP1.$IP2.$IP3.$NET4-$BCAST4" ##### /etc/bind/named.conf.root-hints echo 'zone "'$NET4-$BCAST4.$IP3.$IP2.$IP1'.in-addr.arpa"{' >> /etc/bind/named.conf.root-hints echo " type master;" >> /etc/bind/named.conf.root-hints echo ' file "'/etc/bind/$revZone'";' >> /etc/bind/named.conf.root-hints echo " allow-update { none; };" >> /etc/bind/named.conf.root-hints echo "};" >> /etc/bind/named.conf.root-hints ####/var/named echo '$TTL 1D' > /etc/bind/$revZone echo "@ IN SOA $HOSTNAME. hostmaster.$HOSTNAME. (" >> /etc/bind/$revZone echo " $DATE; serial" >> /etc/bind/$revZone echo " 1H ; refresh" >> /etc/bind/$revZone echo " 15M ; retry" >> /etc/bind/$revZone echo " 14D ; expire" >> /etc/bind/$revZone echo " 12H ; default_ttl" >> /etc/bind/$revZone echo " )" >> /etc/bind/$revZone echo "@ IN NS $HOSTNAME." >> /etc/bind/$revZone echo "$IP4 IN PTR mail.$DOMAINNAME." >> /etc/bind/$revZone echo "$IP4 IN PTR www.$DOMAINNAME." >> /etc/bind/$revZone systemctl enable named.service sync;sync;reboot