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

2017-01-12 09:31:05 +08:00
 yuexiande
本地有 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
2608 次点击
所在节点    Python
17 条回复
solrted
2017-01-12 09:34:49 +08:00
开 3 个进程,进程分别绑定到这 3 个静态 ip 上面。
貌似没软用,还是会通过默认网关的那个 ip 出去。
yuexiande
2017-01-12 09:42:50 +08:00
@solrted 我之前用上面的代码应该是被检测到了,所以来求解。
gesse
2017-01-12 10:55:36 +08:00
开三个子进程,分别绑定三个 IP , 主进程进行任务分发。
yuexiande
2017-01-12 11:00:46 +08:00
@gesse 对方有可能检测出我的主 IP 吗?
gesse
2017-01-12 11:01:49 +08:00
@yuexiande

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

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

scapy 可以在二层网络发包,所以不管是什么协议都可以。
spice630
2017-01-12 21:55:47 +08:00
你的头像让人浮想联翩,同学你是 做什么的 ?
webjin1
2017-01-12 23:29:18 +08:00
@solrted 不会走默认网关,是哪个源 IP 与目的 IP 通信,就走哪个源 IP 网关出去.
solrted
2017-01-13 08:42:36 +08:00
@webjin1 VPS 上面一个 eth0 网卡上面配置 5 个同网段的 ip 地址,这个我是测试过的,走的是默认网关。
webjin1
2017-01-13 10:29:54 +08:00
@solrted 5 个同网段的默认网关都是相同的。
webjin1
2017-01-13 10:31:02 +08:00
@webjin1 重新改正下,网关都是相同的,默认网关,系统就一个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX