V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yuexiande
V2EX  ›  Python

本地有 3 个静态 IP,应该如何用 Python 分别调用这 3 个 IP 进行操作

  •  
  •   yuexiande · 2017-01-12 09:31:05 +08:00 · 2430 次点击
    这是一个创建于 2654 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本地有 3 个静态 IP ,应该如何用 python 分别调用这 3 个 IP ,主要是用来 smtp 发送。
    我原来的代码
    def bound_socket(*a, **k):
    sock = true_socket(*a, **k)
    sock.bind((ipbind, 0))
    return sock
    true_socket = socket.socket
    17 条回复    2017-01-13 10:31:02 +08:00
    solrted
        1
    solrted  
       2017-01-12 09:34:49 +08:00 via Android
    开 3 个进程,进程分别绑定到这 3 个静态 ip 上面。
    貌似没软用,还是会通过默认网关的那个 ip 出去。
    yuexiande
        2
    yuexiande  
    OP
       2017-01-12 09:42:50 +08:00
    @solrted 我之前用上面的代码应该是被检测到了,所以来求解。
    gesse
        3
    gesse  
       2017-01-12 10:55:36 +08:00
    开三个子进程,分别绑定三个 IP , 主进程进行任务分发。
    yuexiande
        4
    yuexiande  
    OP
       2017-01-12 11:00:46 +08:00
    @gesse 对方有可能检测出我的主 IP 吗?
    gesse
        5
    gesse  
       2017-01-12 11:01:49 +08:00
    @yuexiande

    不能。
    如果你想隐蔽,可以走代理。
    lianghh
        6
    lianghh  
       2017-01-12 11:33:15 +08:00
    赞下头像
    okampfer
        7
    okampfer  
       2017-01-12 11:38:58 +08:00
    LZ 百合控?
    falseen
        8
    falseen  
       2017-01-12 17:10:04 +08:00
    最终走哪个网关是路由表决定的,跟你绑定那个 IP 无关。 socket 是网络层和传输层之间的接口,它无法决定你的数据包走哪个网关。你需要一个能操作数据链路层的库(即二层网络),或者能操作系统路由表的库也行。推荐你使用 scapy , scapy 是一个非常全面的网络库,能灵活的修改和发送二层、三层数据包,也能操作路由表。你可以用它直接发送二层网络包,把目的 MAC 改为你需要的网关的 MAC 就行。
    falseen
        9
    falseen  
       2017-01-12 17:18:54 +08:00
    我擦,上面打错一个字。是“跟你绑定哪个 IP 无关”。

    另外我的回答有些草率了,你先说明一下你的网络情况吧。比如三个 ip 是什么,有几张网卡,网关是怎么配置的,路由表是怎样的。
    yuexiande
        10
    yuexiande  
    OP
       2017-01-12 20:22:42 +08:00
    @falseen 我有 3 个 IP 是在同一个网卡下 默认 IP 一个,添加了另外 2 个 IP
    yuexiande
        11
    yuexiande  
    OP
       2017-01-12 20:25:07 +08:00
    @falseen 我用的是 smtp ,也可以用 scapy 吗
    falseen
        12
    falseen  
       2017-01-12 20:59:35 +08:00
    网关是怎么配置的?

    scapy 可以在二层网络发包,所以不管是什么协议都可以。
    spice630
        13
    spice630  
       2017-01-12 21:55:47 +08:00
    你的头像让人浮想联翩,同学你是 做什么的 ?
    webjin1
        14
    webjin1  
       2017-01-12 23:29:18 +08:00
    @solrted 不会走默认网关,是哪个源 IP 与目的 IP 通信,就走哪个源 IP 网关出去.
    solrted
        15
    solrted  
       2017-01-13 08:42:36 +08:00 via Android
    @webjin1 VPS 上面一个 eth0 网卡上面配置 5 个同网段的 ip 地址,这个我是测试过的,走的是默认网关。
    webjin1
        16
    webjin1  
       2017-01-13 10:29:54 +08:00 via Android
    @solrted 5 个同网段的默认网关都是相同的。
    webjin1
        17
    webjin1  
       2017-01-13 10:31:02 +08:00 via Android
    @webjin1 重新改正下,网关都是相同的,默认网关,系统就一个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1206 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:03 · PVG 02:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.