2012/6/25 "D.Wesołowski" <wesoly@klu.pl>

Wiadomość napisana przez Tomasz Chiliński w dniu 2012-06-25, o godz. 15:24:

W ipset brakuje już tylko zestawu, który by trzymać pary adresów IP
na odwzorowania, które w NAT można użyć!
Ale do tego wiele nie trzeba i można w ipset taki typ zestawu szybko
przygotować. Potem tylko doróbka w DNETMAP v2 i mamy jednoregułkowe
natowanie wewnętrznych IP na zewnętrzne IP ;-)

potwierdzam, odkąd zrobiłem u nas dnetmap i ipset przeladowanie nie powoduje przerw u klientow,
mam pare tablic ipset, wszystkie przeladowujemy swapem, skryptami o podobnej budowie do tego:

echo "Starting ipset mac table generator"
echo -ne " - creating temporary table and generating data: "
      for i in `cat ${0%$START_FILE}rc.fire_mac | grep ^[^#] | cut -d'#' -f1`
      do
        if [ ! `echo $i | grep eth` == "" ] || [ ! `echo $i | grep wlan` == "" ] || [ ! `echo $i | grep wifi` == "" ] || [ ! `echo $i | grep vlan` == "" ]; then
            INTERFACE=`echo $i | cut -d'-' -f1`
            NET=`echo $i | cut -d'-' -f2`              
            if [ `/usr/local/sbin/ipset -L -n |grep -c ^mactable-$INTERFACE-new$` == '1' ]; then
        /usr/local/sbin/ipset -X mactable-$INTERFACE-new
        /usr/local/sbin/ipset -N mactable-$INTERFACE-new macipmap --network $NET
   else
        /usr/local/sbin/ipset -N mactable-$INTERFACE-new macipmap --network $NET
       fi
       echo -ne "$INTERFACE"
        else
            IP=`echo $i | cut -d'-' -f1`
            MAC=`echo $i | cut -d'-' -f2`

            /usr/local/sbin/ipset -A mactable-$INTERFACE-new $IP,$MAC -exist
            echo -ne "#"
        fi
      done
echo " done"
echo -ne " - switching table: "
      for i in `cat ${0%$START_FILE}rc.fire_mac | grep ^[^#] | cut -d'#' -f1`
      do
        if [ ! `echo $i | grep eth` == "" ] || [ ! `echo $i | grep wlan` == "" ] || [ ! `echo $i | grep wifi` == "" ] || [ ! `echo $i | grep vlan` == "" ]; then
            INTERFACE=`echo $i | cut -d'-' -f1`
            NET=`echo $i | cut -d'-' -f2`
     if [ `/usr/local/sbin/ipset -L -n |grep -c ^mactable-$INTERFACE$` == "0" ]; then
        /usr/local/sbin/ipset -N mactable-$INTERFACE macipmap --network $NET
   fi
       /usr/local/sbin/ipset -W mactable-$INTERFACE mactable-$INTERFACE-new
       /usr/local/sbin/ipset -X mactable-$INTERFACE-new
       echo -ne "#"
        fi
      done
echo " done"


Dzieki Panowie,
Wywalilem niepotrzebne iptables -F, dodalem kilka ifow i zastosowalem ipset swap i faktycznie, ani jeden ping sie nie traci ;-)

Co do DNETMAP to jeszcze nie do konca ogarniam jak to zastosowac w mojej sytuacji, tzn w sytuacji w ktorej przyznaje tylko okreslonym klientom publiczne adresy IP (teraz robi to iptables SNAT DNAT) a nie round-robin dla kazdego usera.