Назад | Перейти на главную страницу

Как перенаправить порт 80 на другой порт на той же машине постоянно на CentOS 7?

Я пробовал это, но это только частичный ответ или не подходит для CentOS7. https://serverfault.com/a/320624/439512

Я сделал именно то, что написано, но это неправильно.

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

$ curl localhost
  curl: (7) Failed connect to localhost:80; Connection refused
$ curl localhost:8080
  <html>...</html>
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:webcache

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

Эти две команды будут работать временно, но не после перезапуска:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080

Если вы попытаетесь сохранить это как этот парень говорит, что она полностью сломается и даже умеренно не сработает:

$ sudo systemctl enable iptables
$ sudo service iptables save
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
$ sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

У кого-нибудь есть рабочий пример, как это сделать?

Используйте следующую команду и опубликуйте сообщение об ошибке, если у вас возникнут проблемы.

Убедитесь, что публикация разрешена и открывается с помощью iptables, а затем:

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

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

sudo firewall-cmd --reload

Это не узнавание - постоянно. Без этого команда завершается, но не работает.

"--permanent" - для firewalld, а не для iptables. Это опечатка.

Пожалуйста, укажите ошибку после выполнения следующей cmd. Это сработало для меня

Открыть файл: vim / etc / sysconfig / iptables

Добавить строки ниже

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-ВХОД! -i lo -p tcp -m conntrack --ctstate NEW -m tcp --dport 8080 -j ПРИНЯТЬ

COMMIT

* нац

-A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

COMMIT

После добавления строчки сохраните ее и перезапустите службу

iptables-save

systemctl перезапуск iptables -> REHL 7

перезапуск службы iptables -> RHEL 6

Проверьте трафик с помощью приведенного ниже cmd

iptables -t нат -L -n

ss -tulnp

Примечания: следующие сценарии 1. (Сеть A или компьютер A) --8080 -> ВНУТРЕННИЙ -80-> (Сеть B или компьютер B)

2. (Сеть B или машина B) <- 8080-- ВНУТРЕННИЙ <-80- (Сеть A или машина A)

Попробуйте устранить неполадки извне, используя URL-адрес, потому что правила в уже добавленных вами iptables могут конфликтовать, и это очень сложная программа по сравнению с современными приложениями брандмауэра.

Используйте следующую команду в CentOS 7:

# firewall-cmd --permanent --zone=<zone-name> --add-forward-port=port=80:proto=tcp:toport=443:toaddr=<ip-address>

# firewall-cmd --reload

Измените соответственно вашу зону, порт и ip-адрес.