Итак, мой сервер Glassfish прослушивает порт 8080.
Однако я хочу, чтобы мои запросы поступали на порт 80. скрываясь 8080,
так что люди думают, что мой сервер действительно работает на 80.
Как я могу это сделать с iptables
? Я пробовал следующее правило:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
но это не то, что я хочу, потому что я должен открыть и 80 и 8080, чтобы он работал.
Любые идеи?
Обновить: Я изменил свой файл правил, чтобы он выглядел так:
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
#REDIRECTION RULES
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \
--to-destination 127.0.0.1:8080
Но все равно не работает. у меня есть /proc/sys/net/ipv4/ip_forward
установлен в 1
.
Ни http://myserver:8080
ни то, ни другое http://myserver:80
работай. Пакеты отброшены.
У меня был точно такой же вопрос, и я нашел ответ с помощью этого сообщества. Вот ссылка:
Перенаправление порта с помощью iptables на localhost / блокировка порта назначения
Я решил проблему, пометив пакеты, поступающие на 8080, и затем отфильтровав их:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j MARK --set-mark 1
iptables -A INPUT -m mark --mark 1 -j DROP
Последнее правило для отбрасывания помеченных пакетов может быть самым первым правилом в вашей цепочке INPUT.
DNAT у меня не работал с localhost. Я думаю, это потому, что localhost обрабатывается в ядре специально.
Использовать DNAT.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination your.ip.address:8080
Что-то вроде этого должно работать. :)
ИЗМЕНИТЬ после вашего собственного редактирования: Я думаю, что эта строка слишком ранняя в вашем наборе правил:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Благодаря этому ваш сервер не принимает НОВЫХ подключений, верно? Попробуйте переместить его прямо перед вашим iptables -A INPUT -j DROP
линия.
Вы пробовали изменить:
iptables -P FORWARD DROP
к
iptables -P FORWARD ACCEPT
?