#networking #network-programming #iptables #python-iptables
#сеть #сетевое программирование #iptables #python-iptables
Вопрос:
У меня есть сервер под управлением Linux: сервер A Я хочу, чтобы трафик с сервера A перенаправлялся на удаленный сервер b Фактически выполняйте то же самое, что и прямой порт Я использовал следующую команду для прямого порта.
sysctl net.ipv4.ip_forward = 1
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 150 -j DNAT - to-destination des_ip:dest_port
iptables -t nat -A POSTROUTING -j MASQUERADE
Прямой порт работал хорошо, и я мог подключиться к серверу B через сервер B.
Теперь я хочу знать, сколько трафика используется на порту 150 на сервере A?
Если сервер A не является маршрутизатором, я могу легко установить ограничение с помощью следующих команд и рассчитать трафик, потребляемый на сервере A.
sudo iptables -A INPUT -p tcp --dport 150 -j DROP
sudo iptables -A INPUT -p tcp --dport 150 -m quota --quota 100000000 -j ACCEPT
Но поскольку сервер A является маршрутизатором, эти команды не работают
Есть ли какая-либо другая командная строка, которую я могу использовать для вычисления потребляемого трафика порта 150 на сервере A (сервер A является маршрутизатором)?
Я хочу собрать данные об использовании каждого порта с помощью Python и сохранить их в базе данных.
Комментарии:
1. Когда на сервер A (маршрутизатор) поступает входящий трафик на порт 150, он должен обрабатываться какой-либо службой (скажем, на другом сервере, скажем, на сервере C), прослушивающей порт 150, верно? Можете ли вы рассмотреть возможность размещения программного обеспечения для сбора / анализа данных на сервере C?
2. Нет, это не так, у меня нет сервера c, который прослушивает порт 150, сервер A направляет трафик на порт B.
3. Предположим, что Shadosocks установлен на сервере B, например, на порту 300. У меня есть пользователи, которые используют этот Shadosocks. Я не хочу, чтобы мои пользователи видели IP-сервер B и его порт. Поэтому я дал им IP-сервер A и порт сервера 150. Мои пользователи подключаются к IP-серверу A и порту 150 в клиенте shadosocks.
4. В этом случае вы не сможете отслеживать трафик, если не используете высокопроизводительный маршрутизатор в качестве сервера A, который можно запрограммировать (или встроить программное обеспечение для сбора / анализа данных).
5. У меня нет информации о высокопроизводительном маршрутизаторе. Как я могу получить этот тип сервера?
Ответ №1:
В этом вопросе я хотел перенаправить порт 150, который является исходным портом, на порт назначения.
После исследования ПРЕДВАРИТЕЛЬНОЙ МАРШРУТИЗАЦИИ и цепочки ввода в iptables, это то, что я понял:
Цепочка ввода находится после цепочки ПРЕДВАРИТЕЛЬНОЙ МАРШРУТИЗАЦИИ. В соответствии с этой схемой.
Порты транслируются на порт назначения в цепочке ПРЕДВАРИТЕЛЬНОЙ МАРШРУТИЗАЦИИ с помощью NAT, поэтому во входной цепочке нет трафика с исходным портом, а весь трафик транслируется на порт назначения.
Я вижу использование сети на порту назначения во входной цепочке, но я не вижу использование сети на исходном порту во входной цепочке.
Потому что все заголовки пакетов переведены на порт назначения.
Таким образом, верно, что квота для исходного порта не начинает подсчет ни в одной из цепочек.
Даже если я создаю следующие правила в ПРЯМОЙ цепочке:
sudo iptables -A FORWARD -p tcp --dport 150 -j DROP
sudo iptables -A FORWARD -p tcp --dport 150 -m quota --quota 100000000 -j ACCEPT
Опять же, мы не увидим никаких изменений в квоте
Потому что цепочка ПЕРЕСЫЛКИ находится после цепочки предварительной маршрутизации.