Як переправити порт 80 до іншого порту на саморобці?


39

Як я можу пересилати запити, що надходять через порт 80, на інший порт на тій же машині Linux?

Раніше я це робив, змінюючи nat.conf, але ця машина, яку я використовую, не має NAT. Яка альтернатива?


Ніякого NAT чи просто, ні not.conf? Ви спробували будь-які правила iptables за допомогою NAT?
— Бен Свінберн

Відповіді:


47

Ви можете виконати перенаправлення за допомогою iptables:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

+1. Робити це роками
— Олександр Погребняк

1
Як щодо Windows Server?
— Люк

О людино, це саме те, що я шукав, кудо!
— нейроснап

Спочатку не працювало для мене, але було добре, коли я використовувавsudo
— mdiscenza

1
що робити, якщо немає інтерфейсу eth0? чому б не використовувати інтерфейс петлі?
— гарнітур

15

Щойно опинившись у цьому питанні, я не міг знайти простий шлях. Не хочу встановлювати Nginx на мою машину, щоб зробити це просте переадресація портів.

Rinetdне працював для мене, жоден робочий пакет для мого дистрибутива. Я socatзамість цього пішов . Супер просто:

socat TCP-LISTEN:80,fork TCP:127.0.0.1:5000

Повинно працювати, suщоб мати можливість слухати в порту 80.


Налаштування Rinetd простіше, я думаю.
— johnshen64

socat відмінно працює!
— viv

10

Слід звернути увагу на використання зворотного проксі , наприклад Nginx . Наприклад, ви можете помістити щось подібне у свій nginx.confфайл:

server {
    listen         80;

    server_name    your_ip_address your_server_name

    access_log   /var/log/nginx/your_domain/access.log ;
    error_log    /var/log/nginx/your_domain/error.log info ;

    location / {
        proxy_pass  http://127.0.0.1:3000;   # pass requests to the destination
    }
}


2
Чому? Я не обов'язково погоджуюся, але чи є вагома причина, щоб ви не хотіли, щоб це просто сталося ™ в мережевому стеку?
— Олі

@Oli Цей метод зворотного проксі не вплине на численні інші віртуальні хости на сервері, що може статися, якщо iptables зробить це, оскільки iptables нічого не знає про віртуальних хостах.
— попіл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.