С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 11:11 |
на сервере есть пачка ип, все соединения идут через главный
можно ли указать вначале скрипта, через какой из ипшников делать все исходящие соединения?
P.S. сейчас могу только через curl включать опцией CURLOPT_INTERFACE
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 07/10/10 в 11:16 |
Соединяться чем?
PS Всегда нравился вопрос "Как открыть файл?"
PSS Обычно в языках разных для этого используется команда со словом bind в себе. Например, socket_bind() в PHP.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 11:31 |
lega_cobra писал: | Соединяться чем?
PS Всегда нравился вопрос "Как открыть файл?"
PSS Обычно в языках разных для этого используется команда со словом bind в себе. Например, socket_bind() в PHP. |
socket_bind это будет работать для любой исходящей операции соединения, например fopen url?
или только для сокет коннектов?
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 07/10/10 в 12:18 |
ibiz писал: | socket_bind это будет работать для любой исходящей операции соединения, например fopen url?
или только для сокет коннектов?
|
Только для данного сокета.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 12:33 |
так вот меня интересует можно ли временно переопределить дефолтный адрес для всех последующих соединений в скрипте
на язык без разницы, хоть через шелл, главное интерпритируемый, то бишь без компиляции софта
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 16:06 |
ну из всех паблик-опенсорс, доступных на разных платформах и языках, пока это кУРЛ...
можно локально сокс повесить (кстати, так даже лучше) и через него курлом(или чем любым другим, умеющим через прокси ходить) заруливать
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 16:23 |
mr. snatch писал: | ну из всех паблик-опенсорс, доступных на разных платформах и языках, пока это кУРЛ...
можно локально сокс повесить (кстати, так даже лучше) и через него курлом(или чем любым другим, умеющим через прокси ходить) заруливать |
пока самое лучшее что смог натеоретить это повесить прокси и директивой pfpro.proxyaddress через ini_set указывать через что конектиться, на практике хз, пока ищу еще варианты
может через iptables можно рулить соединениями исходящими от определенного процесса...
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 16:32 |
Цитата: | повесить прокси и директивой pfpro.proxyaddress через ini_set указывать через что конектиться |
ээ, сорь, зачем так, может я не правильно тебя понял, но если в проекте юзается кУРЛ, имхо более правильнее это делать средствами самого кУРЛа
Код: |
CURLOPT_HTTPPROXYTUNNEL = true,
CURLOPT_SSL_VERIFYHOST = false,
CURLOPT_SSL_VERIFYPEER = false,
CURLOPT_PROXY = '127.0.0.1:8081', # локальный ИП:порт где прокся
CURLOPT_PROXYUSERPWD ='логин:пароль' # на проксю
CURLOPT_PROXYTYPE = CURLPROXY_HTTP (HTTP/HTTPS прокся) или
CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5 (локальная прокся - сокс5)
|
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 16:37 |
mr. snatch писал: | ээ, сорь, зачем так, может я не правильно тебя понял, но если в проекте юзается кУРЛ, имхо более правильнее это делать средствами самого кУРЛа
Код: |
CURLOPT_HTTPPROXYTUNNEL = true,
CURLOPT_SSL_VERIFYHOST = false,
CURLOPT_SSL_VERIFYPEER = false,
CURLOPT_PROXY = '127.0.0.1:8081', # локальный ИП:порт где прокся
CURLOPT_PROXYUSERPWD ='логин:пароль' # на проксю
CURLOPT_PROXYTYPE = CURLPROXY_HTTP (HTTP/HTTPS прокся) или
CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5 (локальная прокся - сокс5)
| |
нет, в проекте юзается fopen
и коннектится с одного ип адреса, затем юзается file_get_content и коннектится с этого же адреса, и все другие исходящие соединения сокету, курлы, конектятся с этого адреса
у меня задача, одним движением сменить этот адрес для всех исходящих соединений
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 16:41 |
хм, ну как вариант, заменить file_get_contents на курл, или использовать соксификаторы, типа ProxyChains и т.д.
...просто это более правильнее, чем возиться с кастылями для file_get_contents. Так же можно заюзать расширения контекстов, не убирая file_get_contents, но всё-равно исходник допиливать прийдётся
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 16:50 |
ну скажем так, у меня нет доступа к скрипту, а открывать соединение через заданный ип надо
если б все так легко было я б не спрашивал
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 16:59 |
если внутри скрипта коннекты идут на разные IPы, и для одних нужно юзать один и-фейс, для других - другой, то просто маршрутизацией (route add ... dev ethX)
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 17:06 |
mr. snatch писал: | если внутри скрипта коннекты идут на разные IPы, и для одних нужно юзать один и-фейс, для других - другой, то просто маршрутизацией (route add ... dev ethX) |
а подробнее можно, как временно прописать роуты для определенного скрипта, чтоб другие скрипты не пострадали?
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 17:27 |
можно соксифицировать сам скрипт, например этим, и заруливать его через нужную проксю, типа
proxychains script.xxx
а в /etc/proxychains.conf указываются прокси и т.д. которые используются для соксифицируемого процесса
Но, если сам скрипт лезит на разные ИПы и для этих разных ИПов нужно юзать разные интерфейсы, то имхо, проще, написать свой коннектор(шлюз), который будет разруливать подключения для этого скрипта. То есть скрипт коннектится к шлюзу (через соксификатор), шлюз уже знает какой и-фейс юзать в конкретном случае.
Думаю, как-то так...
зы: а стандартными средствами, насколько я знаю, конкретно для процесса таблицы раутинга не модифицирутся, тем более так, что бы если этот скрипт используя один ИП ишёл через и-фейс 0, а другой скрипт, так же коннектящийся на тот же самый ИП, но шёл через й-фейс 1.
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 07/10/10 в 20:53 |
А доки по курлу влом почитать?
CURLOPT_INTERFACE The name of the outgoing network interface to use. This can be an interface name, an IP address or a host name.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 20:59 |
Sha писал: | А доки по курлу влом почитать?
CURLOPT_INTERFACE The name of the outgoing network interface to use. This can be an interface name, an IP address or a host name. |
мне нет, лучше первый пост почитай
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 07/10/10 в 21:09 |
Что-то вы тут совсем наворотили, пока меня не было.
Лёгкая теория, как это все работает. Что бы открыть исходящее IP соединение, любая программа создает сокет, и биндит его на IP адрес. Исходящий адрес по умолчанию - 0.0.0.0. Это значит, что выбор исходящего адреса лежит на OS. А OS обычно выбирает main IP интерфейса, куда едет соединение. Т.е. всегда выбор исходящего IP, по сути, остается за OS. В отдельных случаях, когда инструмент позволяет это сделать на пользовательском уровне, можно указать прямо, на какой адрес биндить вместо адреса "по умолчанию", т.е. вместо 0.0.0.0/32.
Биндить пользовательский адрес можно только после создания сокета, но до открытия коннекта. Функция fopen сама создает сокет и открывет коннект в одном флаконе. Так-что, скорее всего, нельзя биндить исходящий IP в этой команде. Хотя, можно в сырцах посмотреть, откуда там берется этот IP. Может какая переменная есть...
Последний раз редактировалось: lega_cobra (07/10/10 в 21:12), всего редактировалось 1 раз
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 07/10/10 в 21:12 |
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 21:24 |
про контексты и курлы уже говорили ) ТС сырец править не может я так понял, и при этом ему нужно разрулить коннекты только для конкретного процесса через разные и-фейсы
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 07/10/10 в 21:27 |
Цитата: | ну скажем так, у меня нет доступа к скрипту, а открывать соединение через заданный ип надо icon_smile.gif |
Цитата: | можно ли указать вначале скрипта, через какой из ипшников делать все исходящие соединения? |
Тогда мне просто интересно как ТС собирается вначале скрипта что-либо указывать если к скрипту доступа у него нет?
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/10/10 в 21:32 |
ну он там php.ini правит, то есть exec из обёртки можно сделать, которая этот скрипт запускает...
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/10/10 в 21:44 |
Sha писал: | Тогда мне просто интересно как ТС собирается вначале скрипта что-либо указывать если к скрипту доступа у него нет? |
я слукавил, могу дописать в скрипт строки, но не заменять функции
|
|
|
|