Я хотел бы задать вопрос относительно правила прямого порта для firewalld .
OS, которую я использую,
CentOS Linux release 7.3.1611 (Core)
Перенаправлять запросы к httpd, прослушивающему 127.0.0.1:80
[root@development /]# netstat -atunp | grep httpd
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 2601/httpd
Я установил правило firewalld, как показано ниже. 12194] Однако, если я отправляю запрос с внешнего хоста, firewalld отклоняет запрос на порт 8080.
В этом случае
192.168.11.2 (клиент) -------> 192.168 .11.13 (8080)
[root@dellinspiron13z asset]# curl -XGET 192.168.11.13:8080
curl: (7) Failed to connect to 192.168.11.13 port 8080: Connection refused
Если процесс работает как 0.0.0.0:80 , он работает отлично.
Есть ли способ перенаправить запросы на порт localhost?
Вам нужно изменить route_localnet в sysctl на интерфейсе с адресом 92.168.11.13 или на «все», если вы ленивы
По счастливому совпадению у меня есть свежая CentOS той же версии, поэтому по умолчанию это ручка отключена
[root@tesla ~]# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
[root@tesla ~]# sysctl -a | grep route_localnet
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.enp0s5.route_localnet = 0
net.ipv4.conf.lo.route_localnet = 0
Вот как это делается:
firewall-cmd --permanent --direct --add-rule ipv4 nat OUTPUT 0 -p tcp -o lo --dport 8080 -j REDIRECT --to-ports 80