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

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

У меня есть сервер nginx, который прослушивает localhost: 80 и Я хочу получить к нему доступ с ip моего сетевого адаптера 192.168.29.167:80 . Я следил за руководством digitalocean по настройке правил.

my:

type Interface address
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 )

0
задан 14 December 2020 в 19:30
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 с самого сервера.

0
ответ дан 14 December 2020 в 16:25

Теги

Похожие вопросы