社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python端口转发/多路复用服务器

Ib33X • 5 年前 • 611 次点击  

我想让服务器监听udp端口162(snmp陷阱),然后将此流量转发给多个客户端。同样重要的是源端口和地址保持不变(地址欺骗)。

我想最好的工具是 Twisted Scapy 或者香草插座, 只有我在twisted关于源地址欺骗/伪造的文档中找不到任何内容。

有什么解决办法吗?

编辑:增加悬赏,我是有任何解决方案与iptables?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40240
 
611 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Luke Stanley
Reply   •   1 楼
Luke Stanley    12 年前

一种不同但相关的转发端口解决方案,而不是多路复用(不回答特定问题,但希望匹配相关的端口-这是我正在寻找的至少):

http://www.linux-support.com/cms/forward-network-connections-with-python/

Benson
Reply   •   2 楼
Benson    15 年前

我不喜欢twisted或scapy,但是使用普通的python套接字很容易做到这一点。它的一个额外优势是它将更加便携。此代码适用于我的有限测试:

#!/usr/bin/python
from socket import *
bufsize = 1024 # Modify to suit your needs
targetHost = "somehost.yourdomain.com"
listenPort = 1123

def forward(data, port):
    print "Forwarding: '%s' from port %s" % (data, port)
    sock = socket(AF_INET, SOCK_DGRAM)
    sock.bind(("localhost", port)) # Bind to the port data came in on
    sock.sendto(data, (targetHost, listenPort))

def listen(host, port):
    listenSocket = socket(AF_INET, SOCK_DGRAM)
    listenSocket.bind((host, port))
    while True:
        data, addr = listenSocket.recvfrom(bufsize)
        forward(data, addr[1]) # data and port

listen("localhost", listenPort)