
Я хочу перенаправить порт 80 на сетевом интерфейсе обратной связи, чтобы доступ к этому порту фактически осуществлялся на порт 8080.
Я попробовал использовать следующую команду, но она работает только в том случае, если приложение прослушивает 127.0.0.1:8080, но не работает, если оно прослушивает 127.1.2.3:8080.
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080
Я тоже пробовал добавлять --source 127.1.2.3/32 --destination 127.1.2.3/32
, но все равно не работает.
Перенаправление работает, если я открываю приложение, прослушивающее 127.0.0.1:8080:
ssh remote -L127.0.0.1:8080:192.168.0.3:80
nc 127.0.0.1 80 # works
Но это не работает, если я открываю приложение, прослушивающее 127.1.2.3:8080:
ssh remote -L127.1.2.3:8080:192.168.0.3:80
nc 127.1.2.3 80 # fails
nc: connect to 127.1.2.3 port 80 (tcp) failed: Connection refused
nc 127.1.2.3 8080 # works, so the application is still listening on 8080
Как перенаправить порт 8080 на 127.xxx на порт 80 на том же IP?
Обновление: Мотивация
Я пытаюсь использовать SSH для выполнения следующих переадресаций портов (127.1.2.3:80 → 192.168.0.3:80 и 127.1.2.4:80 → 192.168.0.4:80):
ssh remote -L127.1.2.3:80:192.168.0.3:80 -L127.1.2.4:80:192.168.0.4:80
Поскольку порт 80 является "привилегированным", ssh не может открыть его на localhost. Есть несколько способов обойти это:
sudo ssh
, но я не хочу копировать конфигурацию SSH и ключи в учетную запись root.- Использовать возможности, но обновления пакетов могут нарушить это.
- Используйте другой порт (например, 8080), который работает, но неотносительные URL-адреса не работают.
- Перенаправьте привилегированный порт на непривилегированный, и это то, что я пытаюсь сделать. Это работает для одного перенаправления на 127.0.0.1, но не работает, если у меня есть перенаправления на IP-адреса, отличные от 127.0.0.1 (см. выше).