我有环回 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