от Vladsun(9-09-2006)

рейтинг (12)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Наскоро ми се наложи да реша следния проблем:
- получихме една /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 (малко упътване) >>