UFW управляет для определенного хоста / динамический DNS

Я предположил бы, что существует БОЛЬШЕ шанса vmdk повреждения с помощью 'сервера', чем ESXI, поскольку это имеет очень маленький HCL конкретно, чтобы гарантировать, что драйверы максимально стабильны. Я имею 24 000 'часов хоста' с ESX/i и никогда не видел vmdk повреждения, вызванного 'в полете'. Если бы необходимо было получить данные от диска VMFS3, то Вы могли бы всегда просто монтировать его как вторичный диск на другом хосте ESXI и копировать/перемещать их, как обычно.

0
задан 18 September 2013 в 14:25
1 ответ

В этом блоге я нашел очень полезный сценарий, который динамически создает правила для определенных хостов . Сценарий должен запускаться с cron, чтобы он мог искать имя хоста и добавлять / удалять правила в случае изменения IP.

#!/bin/bash


HOSTS_ALLOW=/etc/ufw-dynamic-hosts.allow
IPS_ALLOW=/var/tmp/ufw-dynamic-ips.allow

add_rule() {
  local proto=$1
  local port=$2
  local ip=$3
  local regex="${port}\/${proto}.*ALLOW.*IN.*${ip}"
  local rule=$(ufw status numbered | grep $regex)
  if [ -z "$rule" ]; then
      ufw allow proto ${proto} from ${ip} to any port ${port}
  else
      echo "rule already exists. nothing to do."
  fi
}

delete_rule() {
  local proto=$1
  local port=$2
  local ip=$3
  local regex="${port}\/${proto}.*ALLOW.*IN.*${ip}"
  local rule=$(ufw status numbered | grep $regex)
  if [ -n "$rule" ]; then
      ufw delete allow proto ${proto} from ${ip} to any port ${port}
  else
      echo "rule does not exist. nothing to do."
  fi
}


sed '/^[[:space:]]*$/d' ${HOSTS_ALLOW} | sed '/^[[:space:]]*#/d' | while read line
do
    proto=$(echo ${line} | cut -d: -f1)
    port=$(echo ${line} | cut -d: -f2)
    host=$(echo ${line} | cut -d: -f3)

    if [ -f ${IPS_ALLOW} ]; then
      old_ip=$(cat ${IPS_ALLOW} | grep ${host} | cut -d: -f2)
    fi

    ip=$(dig +short $host | tail -n 1)

    if [ -z ${ip} ]; then
        if [ -n "${old_ip}" ]; then
            delete_rule $proto $port $old_ip
        fi
        echo "Failed to resolve the ip address of ${host}." 1>&2
        exit 1
    fi

    if [ -n "${old_ip}" ]; then
        if [ ${ip} != ${old_ip} ]; then
            delete_rule $proto $port $old_ip
        fi
    fi
    add_rule $proto $port $ip
    if [ -f ${IPS_ALLOW} ]; then
      sed -i.bak /^${host}*/d ${IPS_ALLOW}
    fi
    echo "${host}:${ip}" >> ${IPS_ALLOW}
done

Содержимое /etc/ufw-dynamic-hosts.allow может выглядеть вот так:

tcp:22:yourpc.no-ip.org

и запись crontab для выполнения скрипта каждые пять минут может выглядеть так:

*/5 * * * * /usr/local/sbin/ufw-dynamic-host-update > /dev/null
4
ответ дан 4 December 2019 в 11:52

Теги

Похожие вопросы