У меня есть маршрутизатор с LEDE. Там у меня есть настройка перенаправления портов по умолчанию в среде NAT. Когда пункт назначения получает запрос, IP-адрес источника был переписан IP-адресом маршрутизатора, а исходный порт был заменен на случайный порт маршрутизатора. Было бы здорово сохранить исходный IP и порт. К сожалению, это кажется невозможным, когда мне приходится использовать NAT.
Теперь я ищу способ получить исходный IP-адрес и порт на основе замаскированного порта, открытого на маршрутизаторе. Теоретически это должно быть возможным, потому что это информация, которая записывается в ответный пакет. Есть ли команда, как это найти? Или мне придется переписывать iptables? Я ищу что-то вроде этого:
$ iptables -t nat --lookup-masquerading-table --masqueraded-port 98765
Original Source-IP: 192.0.2.146
Original Source-Port: 7890
Original Dest-IP: 198.51.100.123
Original Dest-Port: 1234
Masqueraded Source-IP: 10.0.0.1
Masqueraded Source-Port: 98765
Masqueraded Dest-IP: 10.0.0.2
Masqueraded Dest-Port: 1234
Заранее спасибо!
Записи маскарадного NAT можно увидеть в / proc / net / ip_conntrack
или / proc / net / nf_conntrack
. В файле есть одна строка для каждого соединения, отслеживаемого IPTables. В каждой строке отображается информация об адресе / порте как для входящих, так и для исходящих пакетов для конкретного соединения.
Если входящий IP-адрес отличается от исходящего IP-адреса, то это соединение NAT, и из него можно анализировать необходимую информацию. .
Существует также инструмент netstat-nat
, который обрабатывает описанный выше процесс и просто показывает соединения NAT, проходящие через устройство. Можно также дополнительно отфильтровать соединения с помощью параметров командной строки.