【问题标题】:How can I set source IP to send traffic in Python如何设置源 IP 以在 Python 中发送流量
【发布时间】:2020-07-13 23:56:18
【问题描述】:

我有一个向服务器发送流量的脚本。它将传入流量标记为特定 IP 的已知位置流量。

我的脚本通过 Pycurl 发送流量。我暂时无法更改 Pycurl,所以有什么方法可以通过发送该特定源 IP 来发送流量。

选项要么在 pycurl 中设置源 IP,要么使其使用使用该特定 IP 创建的某个接口。我需要知道如何在 python 中创建一个虚拟接口来为特定 IP 提供流量,以便 pycurl 选择该接口进行发送。

【问题讨论】:

    标签: sockets network-programming python-3.6 ip-address pycurl


    【解决方案1】:

    如果您有多个具有多个 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 需要能够向它发送流量(同一子网)。

    如果您有多个接口,并且您要使用的 ip 是唯一绑定到其中一个接口的 ip,那么您只需将以下内容添加到您的 Pycurl 程序中:

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

    其中 eth2 是请求来自的接口的名称。如果您想要作为源的 IP 是唯一绑定到 eth2 的 IP,则请求将具有该源 IP。

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2016-09-20
      • 2016-07-23
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多