如何在代理服务器位于远程的情况下配置透明代理?

奥利弗·史密斯(Oliver Smith)

我要达到的目标

我有一个CentOS(6.8)盒子1.1.1.1和一个远程鱿鱼代理服务器2.2.2.2

我试图curl http://google.com -x 2.2.2.2:3128用没有HTTP代理选项并且不尊重http_proxy变量(例如telegraf)的应用程序模拟结果

到目前为止我尝试过的

我尝试设置iptables规则以将流量转发到代理:

iptables -t nat -A PREROUTING -i eth0 ! -s 2.2.2.2 -p tcp --dport 80 -j DNAT --to 2.2.2.2:3128
iptables -t nat -A POSTROUTING -o eth0 -s 1.1.1.1 -d 2.2.2.2 -j SNAT --to 1.1.1.1
iptables -A FORWARD -s 1.1.1.1 -d 2.2.2.2 -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

然后,我发现如果将流量发送到远程邮箱,DNAT将无法正常工作,因为返回流量无法正确路由。基于此,我将应用程序移至CentOS框上的docker容器(172.17.0.9),并计划将iptables配置保留在主机上,从而修改iptables配置:

iptables -t nat -A PREROUTING -i eth0 ! -s 2.2.2.2 -p tcp --dport 80 -j DNAT --to 2.2.2.2:3128
iptables -t nat -A POSTROUTING -o eth0 -s 172.17.0.0/16 -d 2.2.2.2 -j SNAT --to 1.1.1.1
iptables -A FORWARD -s 172.17.0.0/16 -d 2.2.2.2 -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

我还尝试了以下规则集:

iptables -t nat -A PREROUTING -i eth0 -s 172.17.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2:3128
iptables -t nat -A POSTROUTING -o eth0 -d 2.2.2.2/32 -j MASQUERADE

这两个规则集的结果是,http流量仍在尝试直接到达目的地,而不是通过代理。

[root@host ~]# tcpdump -nnn host 216.58.201.35
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:26:24.536668 IP 1.1.1.1.38566 > 216.58.201.35.80: Flags [S], seq 3885286223, win 14600, options [mss 1460,sackOK,TS val 2161333858 ecr 0,nop,wscale 9], length 0

docker容器上的默认网关已正确设置为主机,主机上已启用IP转发。

[root@docker /]# ip route
default via 172.17.0.1 dev eth0

[root@host ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

我是否在这里遗漏了一些明显的东西?

奥利弗·史密斯(Oliver Smith)

解决

使用iptables规则集:

-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 2.2.2.2:3128
-A POSTROUTING -s 172.17.0.0/16 -j SNAT --to-source 1.1.1.1

看起来这是因为接口设置不正确(应该是docker0)-已从iptables规则中删除了接口标志,现在可以正常工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不安装任何软件的情况下使用代理服务器

来自分类Dev

如何强制wget在不修改系统文件的情况下使用代理服务器?

来自分类Dev

如何强制wget在不修改系统文件的情况下使用代理服务器?

来自分类Dev

如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

来自分类Dev

如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

来自分类Dev

配置代理服务器

来自分类Dev

如何配置Maven不使用代理服务器

来自分类Dev

Cloudflare SSL证书而不位于代理服务器下

来自分类Dev

将Tor配置为可以远程连接的侦听代理服务器?

来自分类Dev

如何配置身份验证代理服务器

来自分类Dev

将CentOS 6.7配置为Squid代理服务器:如何解决此问题?

来自分类Dev

如何使用symfony / panther设置代理服务器

来自分类Dev

如何通过代理服务器连接到VPN

来自分类Dev

如何设置本地代理服务器以测试程序?

来自分类Dev

如何加密与鱿鱼代理服务器的连接

来自分类Dev

级联的HTTP代理服务器如何工作?

来自分类Dev

如何使Thunderbird通过HTTP代理服务器工作?

来自分类Dev

反向代理服务器如何接收子域?

来自分类Dev

代理服务器的推荐端口

来自分类Dev

API代理服务器

来自分类Dev

HTTP代理服务器测试

来自分类Dev

确定代理服务器/端口

来自分类Dev

Nginx与代理服务器的位置

来自分类Dev

API代理服务器

来自分类Dev

HTTP代理服务器测试

来自分类Dev

Nexus代理服务器

来自分类Dev

如何在Objective-C中将MKNetwork框架用于http代理服务器

来自分类Dev

如何在WebServiceTemplate上设置代理服务器详细信息

来自分类Dev

使用代理服务器时如何在Wamp中访问本地主机

Related 相关文章

  1. 1

    如何在不安装任何软件的情况下使用代理服务器

  2. 2

    如何强制wget在不修改系统文件的情况下使用代理服务器?

  3. 3

    如何强制wget在不修改系统文件的情况下使用代理服务器?

  4. 4

    如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

  5. 5

    如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

  6. 6

    配置代理服务器

  7. 7

    如何配置Maven不使用代理服务器

  8. 8

    Cloudflare SSL证书而不位于代理服务器下

  9. 9

    将Tor配置为可以远程连接的侦听代理服务器?

  10. 10

    如何配置身份验证代理服务器

  11. 11

    将CentOS 6.7配置为Squid代理服务器:如何解决此问题?

  12. 12

    如何使用symfony / panther设置代理服务器

  13. 13

    如何通过代理服务器连接到VPN

  14. 14

    如何设置本地代理服务器以测试程序?

  15. 15

    如何加密与鱿鱼代理服务器的连接

  16. 16

    级联的HTTP代理服务器如何工作?

  17. 17

    如何使Thunderbird通过HTTP代理服务器工作?

  18. 18

    反向代理服务器如何接收子域?

  19. 19

    代理服务器的推荐端口

  20. 20

    API代理服务器

  21. 21

    HTTP代理服务器测试

  22. 22

    确定代理服务器/端口

  23. 23

    Nginx与代理服务器的位置

  24. 24

    API代理服务器

  25. 25

    HTTP代理服务器测试

  26. 26

    Nexus代理服务器

  27. 27

    如何在Objective-C中将MKNetwork框架用于http代理服务器

  28. 28

    如何在WebServiceTemplate上设置代理服务器详细信息

  29. 29

    使用代理服务器时如何在Wamp中访问本地主机

热门标签

归档