Как перенаправить порт с enp7s0 на localhost:80

Как перенаправить порт с enp7s0 на localhost:80

Я совсем запутался и ничего не понимаю iptables.

У меня есть сервер nginx, который слушает localhost:80, и я хочу получить к нему доступ с помощью IP-адреса моей сетевой карты 192.168.29.167:80. Я следовалцифровойокеанУчебное пособие по настройке правил.

мой:

тип Интерфейс адрес
local lo 127.0.0.1
NIC lan enp7s0 192.168.29.167

Я сделал,

iptables -A FORWARD -i lo -o enp7s0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i lo -o enp7s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i enp7s0 -o lo -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -d 127.0.0.1 -j SNAT --to-desitnation 127.0.0.1

Настройка PREROUTINGправил POSTROUTINGи FORWARDничего не дала. Я не могу получить доступ localhost:80через enp7s0.

(примечание: у меня есть sudo sysctl -w net.ipv4.ip_forward=1)

решение1

  1. У вас ошибка в natправилах: ваши имена интерфейсов кажутся неверными. Лучше использовать DNATна основе адреса назначения, а не имени входного интерфейса. Таким образом, вам нужно всего одно правило, чтобы добиться желаемого:
iptables -t nat -A PREROUTING --dst 192.168.29.167 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:80
  1. Эти пакеты не пересылаются (транзитируются), но будут входящим. Вы должны разрешить этот трафик в цепочке filter/INPUT, а не в filter/FORWARD. Обратите внимание, после DNATдействия входной интерфейс не меняется (поэтому вы должны указать enp7s0интерфейс, а не lo). Но вы можете разрешить любое DNATсоединение с помощью одного правила.
iptables -t filter -A INPUT -m conntrack --ctstate DNAT -j ACCEPT
  1. Запустите , sysctl -w net.ipv4.conf.enp7s0.route_localnet=1чтобы разрешить прием извне пакетов, адресованных 127.0.0.1.
  2. Лучше использовать iptables-save -cкоманды для вывода полного набора правил со счетчиками. Вы должны увидеть увеличение nat/PREROUTINGсчетчиков правил по крайней мере. Также используйте iptables-applyдля применения новых правил. Проверьте документацию по этим утилитам.
  3. Используйте tcpdump -ni enp7s0 'tcp port 80'для устранения неполадок с трафиком извне.
  4. Для перенаправления локального трафика вам следует использовать следующие правила:
  iptables -t nat -A OUTPUT -p tcp --dport 80 --dst 192.168.29.167 -j DNAT --to 127.0.0.1

В противном случае вы не сможете подключиться к своему nginx через адрес 192.168.29.167 с самого сервера.

Связанный контент