转发此流量的传出端口和来源

转发此流量的传出端口和来源

我已经爬行了互联网,并尝试了一些配置,但到目前为止,我被困住了,所以如果有人在这方面有比我更好的经验,我将需要一些帮助。 :)

我有一个服务器,server1,位于代理后面。代理服务器拥有1个公共IP和1个内部IP。我希望从 server1 到互联网上的特定主机:端口的连接,通过代理并进行源化。来自 server1 的其他流量(例如更新,直接到达互联网,而不通过代理)。

前任:

  • 从 server1 ,尝试到达http://myApidestination.tld:81/myAPI
  • 流量被重定向到代理上的端口 8080
  • 代理在端口 8080 上接收流量,并转发到端口 81 上的 myApidestination.tld
  • 此流量是来源的,因此目标网络服务器将回复代理

我做了什么:

在服务器1上:

iptables -t nat -I OUTPUT -p tcp -d myApidestination.tld --dport 81 -j DNAT --to-destination proxy:8080

在代理上:

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i INT_IF  -o EXT_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i EXT_IF -o INT_IF  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD DROP

iptables -t nat -A PREROUTING -i INT_IF -p tcp --dport 8080 -j DNAT --to-destination myApidestination.tld:81
iptables -t nat -A POSTROUTING -o EXT_IF -p tcp --dport 81 -d myApidestination.tld -j SNAT --to-source proxyPUBLIC_IP

在内核中激活转发并加载模块。

正如预期的那样,来自 server1 的流量将经过代理并到达端口 8080。

但是,流量永远不会通过代理,也永远不会退出这个盒子。看起来规则写得不好,并且 paquet 从未在代理之外传递。

有什么想法吗?

预先非常感谢。

扬恩

答案1

首先 - 你试图以奇怪的方式路由流量。

在具有您的规则的代理上:数据包在预路由中定向到 81 端口,然后在转发链中被阻止。

至少你应该更换

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport8080-m conntrack --ctstate 新 -j 接受

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport81-m conntrack --ctstate 新 -j 接受

还要检查代理上的路由表。

考虑图表 https://www.frozentux.net/iptables-tutorial/chunkyhtml/images/tables_traverse.jpg

Netfilter链和表遍历

相关内容