Iptables 重定向到本地主机?

Iptables 重定向到本地主机?

假设我有一个网络,其中的服务器负责将所有连接从网络内部路由到 Internet。我该如何设置 iptables,以便它不将传入连接路由到 Internet,而是将其路由到本地主机端口 8080。非常感谢大家的帮助。

答案1

sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080

答案2

可以使用iptables,但只能使用内核 >= 3.6 的版本。

你必须这样做:

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forward不是必需的,因为数据包不会被转发,但是如果你不包含 sysctl route_localnet(只在内核 >= 3.6 中有效),数据包将被内核丢弃,因为它认为它是一个“火星人”,来自外部并且目标地址为 127.0.0.1

答案3

阅读 debian 文档(可能适用于其他发行版)我使用它将 podman/docker 端口重定向到本地主机:

8080-> 80

8083->443

#!/bin/bash

# reset iptables rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# redirect ports
iptables -t nat -I OUTPUT --src 0/0 --dst 127.0.0.1 -p tcp --dport 80  -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT --src 0/0 --dst 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8083

核实:

curl -k https://localhost
curl https://localhost

https://wiki.debian.org/Firewalls-local-port-redirection

相关内容