搜索论坛后没有匹配的结果,我问听。
我想将目标端口80中的每个浏览器请求重定向到另一个端口(例如8080)。都在本地主机。
我的工作区是linux
,我想使用iptables
规则和python
代码服务器。
我使用的规则是:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080
。
我还尝试了一些其他标志,如特定的ip源和服务器等。
侦听端口8080的服务器是:
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
def redirect_factory():
class RedirectServer(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(301)
self.send_header('Location', 'www.IdontCare.IdontKnow')
self.end_headers()
return RedirectServer
redirectServer = redirect_factory()
handler = SocketServer.TCPServer(('', 8080), redirectServer)
print("serving at port %s" % 8080)
handler.serve_forever()
问题是当我在connection settings
中配置我的浏览器(不添加iptables规则)时,它运行良好,如下所示:
但是当我使用iptables规则时,它说它有一个损坏的管道,并且浏览器请求根本没有在服务器中收到。因此,如果我在浏览器 www.google.com 中写入网址,我就无法看到self.path
值。
修改
这是iptables -t nat -nvL --line-numbers
输出:
规则正在起作用,但它没有按照我的想法完成。
我玩了一些规则,如果我放下下一个规则之一,我可以在self.headers
值的CNAME中看到。
规则是(我可以选择其中之一):
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 80
- 醇>
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
如果我没有弄错,他们两人都做了同样的事情。
我做错了什么? 以及如何使用iptables规则,比如浏览器的配置?
谢谢!