У меня есть веб-сервер 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