Назад | Перейти на главную страницу

Загадочное поведение iptables

Я настроил две виртуальные машины под управлением Debian Wheezy, чтобы использовать их как серверную и клиентскую системы в одной сети NAT. Они оба могут связаться друг с другом, как показывает пинг.

Сегодня я настроил прокси-сервер Squid на сервере, но ни доступ к прокси-серверу с помощью аутентификации PAM, ни доступ к нему путем перенаправления HTTP-трафика на его порт (после настройки Squid в качестве прозрачного прокси-сервера) не работали, и даже после того, как я потратил часы на проверку и изменение конфигурация Я не смог решить эту проблему.

Однако конкретный вопрос, который я хотел бы здесь задать, скорее связан с совершенно странным поведением записи iptable, которая обычно должна перенаправлять HTTP-трафик на порт Squid.И хотя я также потратил довольно много времени на поиск этого, я не смог найти никого, кто бы испытывал подобное поведение.

Команду iptables довольно легко понять, я бы сказал:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128 

Запись также отображается в цепочке PREROUTING таблицы NAT:

iptables -t nat -L -n -v

Цепочка PREROUTING (политика ACCEPT 10 пакетов, 4249 байтов) pkts bytes target prot opt ​​in source destination

0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Тем не менее, это правило игнорируется, поскольку traceroute показывает не IP-адрес NAT моего прокси-сервера Squid в качестве первого перехода, а стандартный шлюз (10.0.0.1). Журналы Squid также показывают, что он не получает никаких запросов.

Я настроил это как часть различных задач администрирования Linux, и несколько других людей, которые использовали точно такую ​​же конфигурацию в идентичной виртуальной системе Debian Wheezy (включая такую ​​же конфигурацию NAT Virtual Box для серверной и клиентской систем), не обнаружили никаких проблемы с этим у всех. Опытный системный администратор Linux тоже не смог найти объяснения этому странному явлению.

Я могу заходить на веб-сайты, поэтому я думаю, что цепочка PREROUTING просто игнорируется.

Поскольку мне действительно интересно, в чем может быть причина такого поведения, я запустил strace для команд iptables, возможно, в выводе есть что-то, что помогает найти объяснение:

strace iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128

strace iptables -t нат -L -n -v

Я был бы очень признателен, если бы кто-нибудь догадался, в чем может быть причина такого странного поведения.

заранее спасибо

Дэвид