Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: VDS FreeBSD CURLOPT_INTERFACE
Форумы портала PHP.SU » Серверное администрирование » Администрирование *nix » VDS FreeBSD CURLOPT_INTERFACE

Страниц (1): [1]
 

1. darthvoodoo - 05 Января, 2013 - 21:08:27 - перейти к сообщению
Господа помогите пожалуйста разобраться в следующем:
Есть vds с несколькими ip, один из них 1111:230:2::c1.
Кладу скрипт:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         $url = "http://internet.yandex.ru/";
  3.  
  4.         $ch = curl_init();
  5.          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  6.          curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  7.          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  8.          curl_setopt($ch, CURLOPT_NOBODY, false);
  9.          curl_setopt($ch, CURLOPT_HEADER, false);
  10.          curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
  11.          curl_setopt($ch, CURLOPT_INTERFACE, "1111:230:2::c1");
  12.          curl_setopt($ch, CURLOPT_URL, $url);
  13.          $xml_data=curl_exec($ch);
  14.     curl_close($ch);   
  15.         echo $xml_data;
  16. ?>


С опцией CURLOPT_INTERFACE скрипт не работает.
Команда ifconfig выводит:
CODE (text):
скопировать код в буфер обмена
  1. ifconfig
  2. igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
  3.         options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
  4.         ether 00:1e:67:22:9a:1e
  5.         inet 00.000.00.00 netmask 0xffffffff broadcast 62.109.18.92
  6.         inet6 1111:230:2::c1 prefixlen 64
  7.         inet6 2222:230:2::ff prefixlen 64
  8.         nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
  9.         media: Ethernet autoselect (100baseTX <full-duplex>)
  10.         status: active
  11. igb1: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
  12.         options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
  13.         ether 00:11:67:22:9a:1f
  14.         nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
  15.         media: Ethernet autoselect
  16.         status: no carrier
  17. ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
  18.         nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
  19. lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  20.         options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
  21.         nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>


Тоесть, на сколько я понимаю, основной IP: 00.000.00.00 и 2 IPv6 прописаны в одном интерфейсе. Вопрос в следующем: нужно ли дополнительные IP выводить в отдельные интерфейсы, что бы заработал CURLOPT_INTERFACE .
P.S. Ip вымышленные.
2. DeepVarvar - 05 Января, 2013 - 21:18:25 - перейти к сообщению
Интерфейсы не айпишники, а igb1, igb0, ipfw0, lo
Из них нужный и подставляйте.
(Добавление)
И если вы хотите посмотреть вообще все интерфейсы, наберите:
3. Мелкий - 05 Января, 2013 - 21:22:02 - перейти к сообщению
darthvoodoo пишет:
нужно ли дополнительные IP выводить в отдельные интерфейсы, что бы заработал CURLOPT_INTERFACE .

Касательно ipv4 - нет, не нужно. CURLOPT_INTERFACE корректно работает под freebsd с указанием только адреса.
По v6 сказать не могу ничего определённого, в моих деревнях ещё не встречается.
4. DeepVarvar - 05 Января, 2013 - 21:23:12 - перейти к сообщению

Мелкий пишет:
в моих деревнях
Лестный отзыв Радость
5. darthvoodoo - 06 Января, 2013 - 23:09:32 - перейти к сообщению
Мелкий пишет:
Касательно ipv4 - нет, не нужно. CURLOPT_INTERFACE корректно работает под freebsd с указанием только адреса.

Проверил, так и ест.
Тоесть в интерфейсе igb0 теперь прописано два ipv4 и два ipv6.
Между ipv4 скрипт переключает нормально.
При попытке прописать в CURLOPT_INTERFACE ipv6, скрипт выдаёт
Result: Failed to connect to 1111:230:2::c1 No route to host; #7

PHP:
скопировать код в буфер обмена
  1. $url = "http://ipv6.google.com/";
  2.  
  3.         $ch = curl_init();
  4.          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  5.          curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  6.          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7.          curl_setopt($ch, CURLOPT_NOBODY, false);
  8.          curl_setopt($ch, CURLOPT_HEADER, false);
  9.          curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
  10.          curl_setopt($ch, CURLOPT_INTERFACE, "1111:230:2::c1");
  11.          curl_setopt($ch, CURLOPT_URL, $url);
  12.     $data=curl_exec($ch);
  13.    
  14.         $result = !curl_errno($ch) ? 'Ok' : '<b>' . curl_error($ch) . '; #' . curl_errno($ch) . '</b>';
  15.     echo 'Result: ' . $result.'<br>';
  16.     curl_close($ch);
  17.        
  18.         echo $data;


Если кто нибудь работал с curl и ipv6 подскажите пожалуйста в чём может быть проблема?
(Добавление)
Спросил в техподдержке в чём может быть проблема. Ответили: "Здравствуйте, починили - сейчас работает".
Не знаю в чём починка заключалась, но всё действительно заработало.
Всем спасибо. Вопросов больше нет.

 

Powered by ExBB FM 1.0 RC1