Py学习  »  Python

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

Ib33X • 4 年前 • 411 次点击  

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

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

有什么解决办法吗?

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

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

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

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

Benson
Reply   •   2 楼
Benson    14 年前

我不喜欢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)