我想在浏览器中输入虚拟机的IP地址时看到谷歌主页面。我想输入我的Windows浏览器192.168.132.131:8080并重定向到谷歌的主页面(173.194.122.198:80)。 192.168.132.131是我的Debian虚拟机的IP地址。 我该如何打开端口8080并配置iptables? 我做了本教程的建议,但没有得到我想要的东西。 http://www.debiantutorials.com/port-forwarding-with-iptables/ 请帮忙......
答案 0 :(得分:0)
为了看看发生了什么,我使用debian-behind-a-linux而不是debian-behind-a-windows进行测试,因为我没有窗口。另外(我认为)因为我不在美国,示例中的IP对我不起作用。我使用了ping google.com
我可以告诉您教程中的例子仍然有效,如果您在Windows telnet 192.168.132.131 8080
手动尝试,那么您确实连接到谷歌,假设你做得正确(那么给你的规则{{1 }})
什么不起作用(不再?)是HTTP请求:HTTP嵌入IP地址并将其发送到谷歌,谷歌不知道这个URL,并将其重定向到HTTP 301谷歌没有 URL中的IP。唉,HTTP重定向保留了端口8080.由于你的debian没有路由这个,它不能拦截流,第二个HTTP请求根本不会被它看到。您在Windows主机上获得了一个SYN_SENT,试图连接到谷歌服务器的8080端口。
为了解决这个问题,你会(我做)编辑你的windows'host文件,并在192.168.132.131前添加很多google名称,以便第二个请求通过debian VM。这次google发送一个HTTP 302来设置cookie并提供一个没有端口8080的新URL。如果你很幸运,你将从debian盒中获得连接重置,因为那里没有端口80(使用链接等web客户端)在主持人)。但通常谷歌也可以看到你有一个现代浏览器(Firefox ...)并在HTTP 302中提供HTTPS重定向。现在下一个连接是端口443并加密......
在改变主机文件(而不是使用http://www.google.XX:8080/)之后,或多或少有效的唯一方法是直接在http://192.168.132.131:8080/上使用链接(而不是Firefox),其中XX是我的国家/地区代码。我可以进入搜索页面甚至进行搜索。使用www.google.com(而不是在美国)会重定向到www.google.XX,也会失败。
解决方案:如果是HTTP,请使用HTTP工具,而不是TCP / IP工具:使用代理(squid,apache ......)。
如果是拦截,你可以在这个代理上使用重定向(使用iptables)和透明代理设置,但要记住它是不是因为它不在路由器或某个上行链路上而导致流量,所以事情将无法正常工作。祝HTTPS好运,因为网络客户端最多会抱怨中间人攻击。