将环回 IP 转发到另一个 IP

将环回 IP 转发到另一个 IP

我有环回 IP127.0.a.b和远程(非公开)IPx.x.x.x

我需要在我的 ubuntu 机器上实现流量“转发”,这样所有来往的流量都x.x.x.x:9092将被重定向到127.0.a.b:9092

根据我的理解,这样做nc -zv x.x.x.x 9092应该是成功的(这就是我要测试转发的方式)

我正在尝试使用 iptables 来实现这一点。这是我尝试过的,但是没有用

./fw_helper.sh xxxx 127.0.ab 9092

#!/bin/bash
src_ip=$1
dst_ip=$2
port=$3

sudo iptables -X
sudo iptables -F
sudo iptables -t nat -F
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

sudo iptables -A FORWARD -p tcp -s $src_ip --sport $port -d $dst_ip --dport $port -j ACCEPT
sudo iptables -A FORWARD -p tcp -s $dst_ip --sport $port -d $src_ip --dport $port -j ACCEPT

sudo iptables -t nat -A PREROUTING -p tcp -s $src_ip --sport $port --dport $port -j DNAT --to-destination $dst_ip
sudo iptables -t nat -A POSTROUTING -p tcp -d $dst_ip --sport $port --dport $port -j MASQUERADE
sudo iptables -A INPUT -p tcp --sport $port --dport $port -d $dst_ip -s $src_ip -j ACCEPT

我做错了什么?

答案1

您应该在 lo 接口上配置 127.0.ab,并且一些软件在 127.0.ab:9092 上监听。

你只需要一条规则

sudo iptables -t nat -A OUTPUT -d x.x.x.x -p tcp --dport 9092 -j DNAT --to-destination 127.0.a.b

sysctl -w net.ipv4.conf.all.route_localnet=1

如果不起作用,请添加第二条规则

sudo iptables -t nat -A OUTPUT -d x.x.x.x -p tcp --dport 9092 -j SNAT --to 127.0.0.1

答案2

因此问题用一行 iptables 就解决了 sudo iptables -t nat -A OUTPUT -d 10.249.68.185 -j DNAT --to-destination 127.0.14.8

在此处输入图片描述

相关内容