LINUX-BG   Адрес : http://www.linux-bg.org
Смяна на ИП блок
От: Vladsun
Публикувана на: 9-09-2006
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=385242121
Наскоро ми се наложи да реша следния проблем:
- получихме една /22 мрежа от ИП-та;
- трябваше да върнем 3 /24 мрежи на нашия доставчик;
- потребителите са със статично задаване на ИП настройките;
- ИП-тата на нашите mail, www, dns и т.н. сървъри също трябваше да бъдат сменени;
- срокът за изпълнение на горното беше една седмица (след това заминавах на море :):) );
- невъзможно беше в този период да сменим настройките на всички потребители;

Ето какво успях да сътворя:

Първата Ви работа е да смените TTL-а на зоните в DNS сървъра с много малки стойности - прим. 10 сек. (благодаря, В. Колев) за да може да се получи малко време за разпространение на новите адреси. Това се прави със старите зони и възможно най-рано преди смяната на ИП адресите (в идеалния случай - времето от смяната на TTL до смяната с новите зони да е по-голмо от стария TTL). След като смените адресите можете спокойно да върнете TTL-а на зоните към нормалните стойности.

След това "мапваме" старите мрежи към новите:

Примерен код
iptables -t nat -А POSTROUTING -o eth0 -s old_net/24 -j NETMAP --to new_net/24
 iptables -t nat -А PREROUTING -i eth0 -d new_net/24 -j NETMAP --to old_net/24
При мен eth0 е външният интерфейс, eth1 вътрешният.

Дотук всичко вече е решено и ще работи, но възниква следният проблем:
- машините, на които са им сменени настройките с новите ИП-та нямат достъп до интернет заради второто правило.

Избраният от мен вариант беше да се направи списък със сменените ИП-та и те да се ACCEPT-ват в "-t nat, PREROUTING, -i eth0" преди мапването. Т.е:

Примерен код
iptables -t nat -I PREROUTING -i eth0 -d new_ip1 -j ACCEPT
 iptables -t nat -I PREROUTING -i eth0 -d new_ip2 -j ACCEPT

Много по добри резултати се получават, ако се използва IPSET. Тогава:
Примерен код
ipset -N new_net_set ipmap --network new_net/24
 iptables -t nat -I PREROUTING -i eth0 -m set --set new_net_set dst -j ACCEPT
 
 ipset -A new_net_set new_ip1
 ipset -A new_net_set new_ip2

Получиха се обаче оплаквания, че file transfer-a на продукти като ICQ и IRC не работи. Все пак това временно решение си свърши работата, докато се сменят настройките на всички потребители.

ПП: Много внимавайте да няма таргет NOTRACK - скапва целия NETMAP.

<< Съхранение на поверителна информация в БД | squid (малко упътване) >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.19 usr + 0.04 sys = 0.23 CPU)