Я хотел бы сделать сервер, которые слушают на порте UDP 162 (прерывание SNMP), и затем передает этот трафик нескольким клиентам. Также важный то, что исходный порт и адрес остаются то же (спуфинг адреса).
Я предполагаю, что лучшим инструментом для этого был бы Twisted или Scapy или возможно ванильные сокеты, только я ничего не могу найти в документации для Скрученного о спуфинге/ковке исходного адреса.
Какое-либо решение для этого?
Править: добавленная щедрость, mybe какое-либо решение с iptables?
Мне неудобно использовать 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)