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

Невозможно выполнить curl с того же сервера, если у него есть переадресация IP PREROUTING

У меня есть веб-сервер Ubuntu, который использует iptables ПЕРЕРАБОТКА на переадресацию порта 80 к 8000.

Итак, веб-процесс прослушивает порт 8000. Теперь я хочу сделать завиток с того же сервера на запущенное на нем веб-приложение. Но это вызывает В соединении отказано:

$ curl http://my.webite.com/on/same/server
curl: (7) Failed connect to my.webite.com:80; Connection refused

curl-ing в порту 8000 работает (но он должен работать на 80-м порту).

Я также убедился, что этот веб-сервер прослушивает все интерфейсы (не только физический):

$ netstat -ntl | grep LISTEN
...
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
...

Домен моего приложения (my.webite.com) также преобразуется в IP физического интерфейса.

Почему я получаю В соединении отказано?

Цепочка PREROUTING не применяется к локальному (кольцевому) трафику. Вам понадобится правило перенаправления в цепочке OUTPUT, чтобы оно работало в локальной системе.

Например:

iptables -t nat -A OUTPUT -i lo -p tcp --dport 80 -j REDIRECT --to-port 8000