Как настроить исходный IP-адрес для отправки трафика c в Python - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть скрипт, который отправляет трафик c на сервер. Он отмечает входящий трафик c как известный трафик c для указанного c IP.

Мой скрипт отправляет трафик c через Pycurl. Пока я не могу изменить Pycurl, поэтому есть ли способ отправить traffi c, отправив указанный c исходный IP-адрес.

Параметры либо устанавливают исходный IP-адрес в pycurl, либо заставляют его использовать некоторый интерфейс, который создан с указанным c IP. Мне нужно знать, как создать виртуальный интерфейс для обслуживания traffi c для указанного c IP в python, чтобы pycurl выбирал этот интерфейс для отправки.

1 Ответ

0 голосов
/ 02 апреля 2020

Если у вас есть несколько интерфейсов с несколькими IP-адресами или если вы просто хотите, чтобы ядро ​​обрабатывало это, вам просто нужно добавить маршрут к хосту в вашем ядре. На linux это будет выглядеть примерно так:

ip route add 10.45.0.20/32 src 10.45.0.10

Где 10.45.0.10 - это IP-адрес, который вы хотите использовать в качестве источника, а 10.45.0.20 - веб-сервер. Примечание: если у вас есть шлюз для доступа к серверу, то вам нужно иметь оператор «via» и желаемый исходный ip должен иметь возможность отправлять на него трафик c (то же самое su bnet).

Если у вас есть несколько интерфейсов, и IP-адрес, который вы хотите использовать, является единственным, привязанным к одному из этих интерфейсов, то вы можете просто добавить в свою программу Pycurl следующее:

c = pycurl.Curl()
...
c.setopt(pycurl.INTERFACE, "eth2")

Где eth2 Имя интерфейса, с которого будет поступать запрос. Если IP-адрес, который вы хотите использовать в качестве источника, является единственным, привязанным к eth2, то запрос будет иметь этот IP-адрес источника.

...