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

Ib3*_*33X 8 python networking iptables packet-mangling

我想让服务器在UDP端口162(SNMP陷阱)上侦听,然后将此流量转发到多个客户端.同样重要的是源端口和地址保持不变(地址欺骗).

我想最好的工具是TwistedScapy或者可能是vanilla套接字,只有我在Twisted关于源地址欺骗/伪造的文档中找不到任何内容.

对此有何解决方案?

编辑:添加赏金,mybe任何解决方案与iptables?

Ben*_*son 6

我对扭曲或狡猾感到不舒服,但使用香草蟒蛇插座做这件事非常简单.这样做的另一个好处是它将更加便携.此代码适用于我的有限测试:

#!/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)
Run Code Online (Sandbox Code Playgroud)