
Estou muito confuso e não entendo totalmente iptables
.
Eu tenho um servidor nginx escutando localhost:80
e quero acessá-lo com o ip da minha NIC 192.168.29.167:80
. eu estava seguindooceano digitaltutorial sobre como configurar as regras.
meu:
tipo | Interface | endereço |
---|---|---|
local |
lo |
127.0.0.1 |
NIC lan |
enp7s0 |
192.168.29.167 |
Eu fiz,
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
Configurar as PREROUTING
regras POSTROUTING
e FORWARD
não fez nada. Não consigo acessar localhost:80
pelo enp7s0
.
(nota: eu tenho sudo sysctl -w net.ipv4.ip_forward=1
)
Responder1
- Você tem um erro nas
nat
regras: os nomes das suas interfaces parecem incorretos. É melhor usar comDNAT
base no endereço de destino, não no nome da interface de entrada. Então, você precisa apenas de uma regra para conseguir o que deseja:
iptables -t nat -A PREROUTING --dst 192.168.29.167 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:80
- Esses pacotes não são encaminhados (transitados), mas serão recebidos. Você deve permitir esse tráfego na
filter/INPUT
cadeia, não nofilter/FORWARD
. Observe que apósDNAT
a ação a interface de entrada não muda (portanto, você deve especificarenp7s0
interface, nãolo
). Mas você pode permitir qualquerDNAT
conexão com uma única regra.
iptables -t filter -A INPUT -m conntrack --ctstate DNAT -j ACCEPT
- Execute o
sysctl -w net.ipv4.conf.enp7s0.route_localnet=1
para permitir o recebimento de pacotes externos, esses são endereçados ao arquivo127.0.0.1
. - É melhor usar
iptables-save -c
comandos para listar o conjunto completo de regras com contadores. Você deverá aumentarnat/PREROUTING
pelo menos os contadores de regras. Além disso, use oiptables-apply
para aplicar novas regras. Verifique a documentação desses utilitários. - Use o
tcpdump -ni enp7s0 'tcp port 80'
para solucionar problemas de tráfego externo. - Para redirecionar o tráfego originado localmente você deve usar estas regras
iptables -t nat -A OUTPUT -p tcp --dport 80 --dst 192.168.29.167 -j DNAT --to 127.0.0.1
Caso contrário, você não poderá se conectar ao seu nginx através do endereço 192.168.29.167 do próprio servidor.