Я пытаюсь получить исходную информацию о назначении для пакетов, перенаправленных с помощью iptables (конечная цель - перенаправить весь сетевой трафик на локальный хост, сохранив исходный IP-адрес назначения).
Я посылаю пакеты, используя следующий код:Python/iptables: Original Destination IP
import socket
HOST = '192.168.10.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(b'whatever')
s.close()
перенаправлять его:
iptables -t nat -A OUTPUT -d 192.168.10.1 -j DNAT --to 127.0.0.1
А потом получать их:
import socket
HOST = ''
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
while True:
s.listen(5)
conn, addr = s.accept()
print('Connected by', addr)
data = conn.recv(1024)
if(data):
print(data)
conn.close()
Я пытался использовать что-то вроде
dst = conn.getsockopt(socket.SOL_IP, socket.SO_ORIGINAL_DST, 16)
, но это приводит к
AttributeError: 'module' object has no attribute 'SO_ORIGINAL_DST'