Вы могли ifup для использования сценария для добавления адресов для Вас. Создайте следующий сценарий как /etc/network/if-up.d/eth0
#!/bin/bash if [ "$IFACE" eq "eth0" ]; then for IP in {128..254}; do ip addr add 192.168.1.${IP}/24 dev eth0 done fi # EOF
/24 должен быть заменен соответствующей маской подсети.
Соответствующий сценарий в /etc/network/if-down.d/eth0
должен быть создан с помощью "IP addr" del вместо "IP addr, добавляют".
Обязательно работайте chmod +x
на обоих сценариях.
Можно протестировать сценарий с помощью команды IFACE=eth0 /etc/network/if-up.d/eth0
.
Вы могли также создать файл как /usr/local/sbin/eth0-aliases
и выполненный это от опции в /etc/network/interfaces
. Добавить up /usr/local/sbin/eth0-aliases
к eth0 строке файла конфигурации. При использовании этого механизма, Вам не нужно если условие в сценарии.
Если у вас нет доступа к определенным игровым серверам (которые являются экземплярами EC2?) И, следовательно, вы не можете назначить им статический IP-адрес (эластичный IP-адрес на жаргоне AWS), тогда вам необходимо иметь возможность обнаруживать изменение IP-адресов и обновлять соответствующее правило iptables, когда это происходит (имена DNS разрешаются только при первой загрузке правила).
Вы можете использовать задание cron, подобное приведенному здесь ( Я не без ума от этого кода Python, но поиск по запросу «iptables dynamic DNS» должен дать еще несколько идей:
http://diginc.us/linux/2010/using-iptables-with-dynamic-ip- hostnames-like-dyndns-org /
(Обратите внимание, что на странице руководства iptables указано, что использование имен хостов - «очень плохая идея», но я не понимаю, как переписывать правила с использованием IP из результатов DNS-запроса. другой, в любом случае ты 're работает с исходящими соединениями, не разрешая входящие).
Что касается ведения журнала, в iptables типичной практикой является добавление правила сопоставления с адресатом LOG перед рассматриваемым правилом:
Лично я бы создал отдельная цепочка для каждого сервера, на который вы хотите перенаправить:
iptables -t nat -N chain_gameserver1
iptables -t nat -A chain_gameserver1 -m state --state NEW -j LOG --log-prefix "Gameserver 1 new connection"
iptables -t nat -A chain_gameserver1 -j DNAT --to gameserver1.wherever.com:<port>
И затем попросите cron, который проверяет изменения IP-адресов на gameserver1, просто очистить и перезагрузить chain_gameserver1, а не все ваши таблицы.