Перехват прокси через iptables: порты 80 и 443 как одно множество
Сопоставляйте порты 80 и 443 как одно множество, а выбор адреса клиента держите отдельно от перезаписанной конечной точки прокси.
Чтобы выбрать TCP-трафик, у которого порт назначения 80 или 443, используйте множество:
-p tcp -m multiport --dports 80,443Для сравнения --dport 80:443 выбирает весь диапазон от 80 до 443 включительно. Так захватывается много лишних портов. Запятая и двоеточие выражают разные политики.
Это фрагменты сопоставления, а не полные команды межсетевого экрана. Добавьте их в цепочку и действие, которых требует схема перехвата.
| Селектор | Что он определяет до перезаписи |
|---|---|
-s 192.0.2.20 | Адрес источника клиента |
-d 198.51.100.30 | Адрес сервера назначения |
--dports 80,443 | Порты служб назначения |
Адрес, передаваемый в --to-destination у DNAT, — это новое назначение, например слушатель прокси. Он не заменяет смысл предыдущих сопоставлений источника и назначения.
Держите селектор настолько узким, чтобы он описывал нужных клиентов и трафик. Особенно учитывайте соединения, которые создаёт сам прокси, чтобы его последующие запросы не попадали снова на тот же путь перехвата. Выбор порта 443 также не превращает байты этого соединения в явный запрос к HTTP-прокси; принимающему приложению по-прежнему нужен подходящий режим перехвата. Для прозрачной передачи TCP к прокси транслятор должен восстановить исходное назначение и согласовать протокол прокси.