У меня есть VPS, доступный через hello.com
, запускает ubuntu и минимальный скрипт Python, который обслуживает некоторый HTML-контент. Скрипт python прослушивает порт 8069
. hello.com:8069
работает, как ожидалось, но мне также нужно получить доступ к скрипту Python из порта hello.com:80
.
Я провел небольшое исследование и, по-видимому, прослушивание портов ниже 1000 возможно только с root, что не подходит по соображениям безопасности. Единственное реальное решение, которое я нашел, - это перенаправление порта iptables.
Я попытался установить правило REDIRECT в таблице nat, но посетив hello.com:80
по-прежнему дает мне ошибку тайм-аута.
Вот мой /etc/iptables/rules.v4
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8069
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 22-j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8069 -j ACCEPT
COMMIT
Я следовал нескольким руководствам и установил net.ipv4.conf.eth0.forwarding=1
и net.ipv4.ip_forward=1
. Что-то мне не хватает?
Детали сервера:
root@hello.com:/# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
root@hello.com:/# iptables -V
iptables v1.4.21
root@hello.com:/# ufw version
ufw 0.34~rc-0ubuntu2
Copyright 2008-2012 Canonical Ltd.
root@hello.com:/# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 2067 0 0 0 1879 0 0 0 BMRU
lo 65536 0 637 0 0 0 637 0 0 0 LRU