我需要帮助重新路由在并行上运行的 ubuntu 虚拟机上的流量,将隧道 URL 连接到同一台 ubuntu 机器上的端口 1111,端口 443 的流量通过隧道 URL 转发。成功后,1111 处的服务器应将请求转发到隧道 URL。出于某种原因,当我尝试使用 iptables 和 HAProxy 时,它不起作用
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
对于IPTables
我已经尝试设置ip_forward config flag to 1
如果这就是你所说的。
我尝试将预路由配置设置为以下内容:
sudo iptables -t nat -A PREROUTING -p tcp -d rnqhc-adas-ads-ed01-cb00-sada-asdds-asdd-iii.a.free.pinggy.link --dport 443 -j DNAT --to-destination 127.0.0.1:1111
Then I've masqueraded it.
并补充说
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -d rnqhc-adas-ads-ed01-cb00-sada-asdds-asdd-iii.a.free.pinggy.link -j ACCEPT
我也看到了以下答案: IPTables 重新路由流量不起作用 ,但它没有帮助。
对于HAProxy,我尝试过:
frontend https_front
bind *:443 ssl crt /home/devhouse/Developer/mycert_combined.pem
acl host_mydomain hdr(host) rnqhc-adas-ads-ed01-cb00-sada-asdds-asdd-iii.a.free.pinggy.link
use_backend my_backend if host_mydomain
backend my_backend
server local_proxy 127.0.0.1:1111
我觉得我错过了什么
您的规则中有几个要点。
127.0.0.
如果您在 DNAT 规则中使用该地址,则还需要启用net.ipv4.conf.<iface_name>.route_localnet=1
sysctl 变量。将其写入 sysctl.conf 文件中并运行sysctl -p --system
以应用更改。要重新路由本地发起的流量(在您的情况下来自 HA 代理),您应该将相同的DNAT规则添加到
nat/OUTPUT
链中。避免在规则中使用域名。如果 DNS 不起作用,则可能导致各种问题。
如何排除故障:
用 检查规则计数器
iptables-save -c
。使用 检查 conntrack 事件
conntrack -E
。使用 tcpdump 嗅探流量。