Como reservar o dhcp para o endereço MAC em outro arquivo?

0

Eu tenho um arquivo como este ip_mac que contém o ano do aluno e seu respectivo endereço mac. Eu quero permitir apenas que eles tenham concessões de dhcp. É possível no Ubuntu fazer isso?

94:92:66:38:a6:79                             "Prajwal Bhandary"                       2017            cs            Mob
30:e1:71:c9:1b:43                             "Prajwal Bhandary"                       2017            cs            Lan
94:65:2d:23:a8:4d                             "Unique Karki"                           2017            cs            Mob
84:8f:69:ca:15:00                             "Anup Paudel"                            2017            arch          Mob
88:83:22:eb:1e:41                             "Anup Paudel"                            2017            arch          Lan

e qualquer aluno pode ser adicionado a qualquer parte, por isso, se eu reiniciar o isc dhcp server student não deve ser desconectado.

Uma maneira era usar o formato como este em /etc/dhcp/dchpd.conf

host student1 {
hardware ethernet 94:92:66:38:a6:79;
fixed-address 10.0.0.101;
}

mas o problema é que eu preciso definir ip para cada aluno. E existem mais de 400, então gerenciar ip é noite né?

outra forma era permitir padrão, mas temos limitações de ip como apenas 500 ip, por isso, se pessoas desnecessárias conectam-se, o aluno não pode usá-las, então, existe uma solução para tal situação?

Ou

Você pode apenas usar o endereço MAC e permitir concessões de DHCP em vez de escrever endereço fixo

É possível permitir concessões de dhcp por meio de arquivos digitalizados desse jeito?

    
por aftershock 17.03.2018 / 04:30

2 respostas

0

Eu fiz este script de um dos antigos scripts que guardo.

#!/bin/bash

if [ "$EUID" -ne 0 ];
  then echo "Please run as root (sudo)"
  exit
fi

PATH_DHCP_FILE="./test.conf"
PATH_DHCP_TRUST_FILE="./trust_host"
PATH_STUDENTS_FILE="students.list"
PATH_DHCP_LEASES="/var/lib/dhcp/dhcpd.leases"

DATE='date '+%Y-%m-%d %H:%M''

IP_RANGE_DEFAULT='192.168.1.50 192.168.1.100'
NETMASK_DEFAULT='255.255.255.0'
AGREE_DEFAULT='yes'

echo ""
echo "|==========================================================|"
echo "|**********************************************************|"
echo "|                       DHCP CONF                          |"
echo "|   Welcome to this configuration Script for DHCP Server.  |"
echo "|                                                          |"
echo "|**********************************************************|"
echo "|==========================================================|"
echo ""
echo "CTRL-C to leave"
echo ""

read -p "WARNING. The file $PATH_DHCP_FILE will be edit. Do you want to continue ? [yes] " AGREE
AGREE=${AGREE:-$AGREE_DEFAULT}

if [ "$AGREE" != 'yes' ]
  then echo "Stop script."
  exit
fi

echo ""
echo "Please, fill the following informations (be care about the syntax)"
read -p "Network IP [192.168.1.0]: " IP
read -p "Netmask [255.255.255.0]: " NETMASK
read -p "IP Range [192.168.1.50 192.168.1.100]: " IP_RANGE
IP=${IP:-$IP_DEFAULT}
NETMASK=${NETMASK:-$NETMASK_DEFAULT}
IP_RANGE=${IP_RANGE:-$IP_RANGE_DEFAULT}

echo ""
echo "--DHCP Configuration--"
echo "----Append configuration to $PATH_DHCP_FILE----"
echo "

# ============================
# *DCHP Script configurations*
# ***$DATE***
subnet $IP netmask $NETMASK {
  range $IP_RANGE;
  deny unknown-clients;
}

include \"$PATH_DHCP_TRUST_FILE\";
# ============================
" >> $PATH_DHCP_FILE

echo ""
ADD_MAC_DEFAULT='yes'

echo "# ***$DATE***" >> $PATH_DHCP_TRUST_FILE
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
    studenMac=$(echo $line| cut -d' ' -f 1)
    student=$(echo $line| cut -d' ' -f 2)

    echo "Studen mac : $studenMac"
    echo "Studen host : $student"
    echo "Add $student with $studenMac"
    echo "host $student { hardware ethernet $studenMac; }" >> $PATH_DHCP_TRUST_FILE
done < "$PATH_STUDENTS_FILE"

Edite as variáveis PATH_DHCP_FILE, PATH_DHCP_TRUST_FILE e PATH_STUDENTS_FILE e conclua quando o script solicitar informações.

Existe o resultado no arquivo de teste do meu lado:

Para o arquivo test.conf (/etc/dhcpd.conf)

# ============================
# *DCHP Script configurations*
# ***2018-03-19 17:36***
subnet  netmask 255.255.255.0 {
  range 192.168.1.50 192.168.1.100;
  deny unknown-clients;
}

include "./trust_host";
# ============================

E no arquivo trust_host:

# ***2018-03-19 18:44***
host Prajwal { hardware ethernet 94:92:66:38:a6:79; }
host Prajwal { hardware ethernet 30:e1:71:c9:1b:43; }
host Unique { hardware ethernet 94:65:2d:23:a8:4d; }
host Anup { hardware ethernet 84:8f:69:ca:15:00; }
host Anup { hardware ethernet 88:83:22:eb:1e:41; }

Cuidado, eu não cuido de duplicação.

Espero que isso ajude.

    
por Eraseth 19.03.2018 / 17:48
1

Você pode restringir um pool de endereços com deny unknown-clients; . Desta forma, apenas os endereços MAC que aparecem em uma declaração host receberão um IP.

E você não precisa especificar um fixed-address na declaração host .

Um exemplo mínimo (e não testado) pode ter esta aparência

subnet 192.168.0.0 netmask 255.255.0.0 {
    # option routers 192.168.1.1;
    # option ... etc.

    pool {
            range 192.168.100.1 192.168.101.254;
            deny unknown-clients;
    }
}

include "/etc/dhcpd/known-hosts.conf";

E em "/etc/dhcpd/known-hosts.conf", que deve ser fácil de gerar com um script da sua lista de endereços MAC:

host h1 { hardware ethernet 00:09:b0:48:ca:ec; }
host h2 { hardware ethernet 00:80:88:11:e0:9f; }
    
por mivk 19.03.2018 / 15:38