Gerçek ip bulmak için böyle bir fonksiyon kullanıyorum. Alıntıdır ama nerden hatırlamıyorum.
function gercekip(){
        global $HTTP_SERVER_VARS;
        $private_net_ip_masks = array( '10.0.0.', '192.168.', '127.0.0.', '172.16.0.' );
        if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '' ){
          $ipStrings = explode( ',',$_SERVER['HTTP_X_FORWARDED_FOR']);
          foreach($ipStrings as $k => $v){if( empty($v) ){unset( $ipStrings[$k] ); }else {if(!isset($ipString)) { $ipString = $v; } } }
        }
        if( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '' ){
          $ipStrings[] = $_SERVER['REMOTE_ADDR'];
          if(!isset($ipString)) {$ipString = $_SERVER['REMOTE_ADDR'];}
        }
        foreach($ipStrings as $k1 => $ip){ foreach($private_net_ip_masks as $k2 => $pip){ if(strpos($ip, $pip) === 0) { unset($ipStrings[$k1]); break; } } }
        if(!empty($ipStrings) ){ foreach( $ipStrings as $v ){if(!empty($v)){ $ipString = $v; $is_local_ip = false; break; } }}
        else { $is_local_ip = true; }
        return $ipString;
}