Скрипты находятся в каталоге home
ipset.start
Скрипт для создание базы куда будут записываться ip адреса а также добавления правила в iptables
ipset -N addips iphash
sleep 10
iptables -I INPUT 6 -i eth1 -m set --match-set addips src -j ACCEPT
ipset-read-ip.start
скрипт c циклом while для чтения ip адресов из файла и записи их в базу ipset (addips)
cat /home/host.su/address.txt | (
while read ip;
do
ipset -A addips $ip
done);
install-while-ipset
Вечный цикл while для запуска скрипта ipset-read-ip.start
while true; do ./ipset-read-ip.start;
done;
При загрузке системы запускается
iptables далее
ipset.start далее
install-while-ipset
Задача какая: Записывать ип адреса хостов в текстовый файл которым необходимо давать доступ.
с текстового файла скрипт берет ип и записывает в ipset.
в iptables существует правило которое разрешает ип существующие в базе ipset
При тестировании происходит следующее, цикл работает все хорошо ошибок нет.
делаем запись в файл
(address.txt) откуда считываются ип.
Скрипт считывает, после этого появляется надпись
ipset v6.30: Element cannot be added to the set: it's already added
В принципе логично так как по циклу пытается сделать запись с тем же ип, да и бог с ним.
Но доступ у хоста не появляется, при повторном занесении ип того же хоста вторым по списку, например
192.168.1.1
192.168.1.1
, т.е вторым третьим четвертым итд, тогда в базу (
addips) ipset попадает.
в общем не суть, нужно просто повторить занесение ип в строчке, доступ появляется т.е заносится в базу ипсет ип записанный в текстовый файл.
В общем у меня два вопроса, как объединить все это может в один скрипт а не в несколько,
а также как исправить повторное занесение ип? почему после первого нет доступа, хотя он же пишет ipset v6.30: Element cannot be added to the set: it's already added
что такой ип уже есть в базе)) причем начинает работать не после цикличной попытки внести ип а именно после повторной записи того же самого ип в файл откуда читает.
Прошу прощение за данные костыли и полтора колесный велосипед, не знаю не могу найти решение иное.В общем заметил что когда в списке "в текстовом файле" один раз записан ip то он не вносится в лист ipset, когда в списке два одинаковых ip тогда вносит.
Думаю с циклом косяк какой-то