Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#! /usr/bin/env python
import os, sys
fpid = os.fork()
if fpid!=0:
sys.exit(0)
import nfqueue
import scapy.all
from scapy.all import *
r = re.compile('^169\.254\.1\.')
def callback(payload):
data = payload.get_data()
pkt = IP(data)
if pkt.haslayer(DNSRR):
if pkt[DNS].ancount > 0:
for rr in range(pkt[DNS].ancount):
pkt[DNS][DNSRR][rr].rdata = r.sub('192.168.89.',pkt[DNS][DNSRR][rr].rdata)
pkt[IP].len = len(str(pkt))
pkt[UDP].len = len(str(pkt[UDP]))
del pkt[UDP].chksum
del pkt[IP].chksum
payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(pkt), len(pkt))
def main():
q = nfqueue.queue()
q.open()
q.bind(socket.AF_INET)
q.set_callback(callback)
q.create_queue(0)
try:
q.try_run() # Main loop
except:
q.unbind(socket.AF_INET)
q.close()
main()
Объединение двух локальных сетей с одинаковым номерами сетей на Linux-шлюзе