Chr*_*ris 58 linux firewall iptables port-forwarding
我想将所有流量从端口 443 重定向到内部端口 8080。我正在为 iptables 使用此配置:
iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \
--dport 443 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
这适用于所有外部客户。但是如果我试图从同一台机器访问端口 443,我会收到连接被拒绝的错误。
wget https://localhost
Run Code Online (Sandbox Code Playgroud)
如何扩展 iptables 规则以重定向本地流量?
And*_*ndy 75
环回接口不使用 PREROUTING,您还需要添加一条 OUTPUT 规则:
iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
小智 12
要将数据包从本地主机重定向到另一台机器,规则:
iptables -t nat -A OUTPUT -o lo -d 127.0.0.1 -p tcp --dport 443 -j DNAT --to-destination 10.x.y.z:port
Run Code Online (Sandbox Code Playgroud)
将工作,但您还需要在内核中启用此选项:
sysctl -w net.ipv4.conf.all.route_localnet=1
Run Code Online (Sandbox Code Playgroud)
没有那个内核设置它就行不通。
您说您收到连接拒绝错误。这意味着没有本地进程正在侦听您尝试连接的端口!要检查监听进程,请使用以下命令:
$ sudo netstat -lnp | grep 8080
Run Code Online (Sandbox Code Playgroud)
应用规则后,您应该有一个进程侦听端口 8080 以进行连接。
看来你应该有以下规则:
$ iptables -t nat -I OUTPUT --source 0/0 --destination 0/0 -p tcp
--dport 443 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
请记住,您是从本地主机发送的。因此,您需要重定向输出数据包。