如何制作正确的iptable规则,如浏览器端口配置

时间:2018-06-03 19:14:29

标签: linux python-2.7 iptables serve

搜索论坛后没有匹配的结果,我问听。

我想将目标端口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规则)时,它运行良好,如下所示:

enter image description here

但是当我使用iptables规则时,它说它有一个损坏的管道,并且浏览器请求根本没有在服务器中收到。因此,如果我在浏览器 www.google.com 中写入网址,我就无法看到self.path值。

修改 这是iptables -t nat -nvL --line-numbers输出:

enter image description here

规则正在起作用,但它没有按照我的想法完成。

我玩了一些规则,如果我放下下一个规则之一,我可以在self.headers值的CNAME中看到。 规则是(我可以选择其中之一):

  
      
  1. iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 80
  2.   
  3. iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
  4.   

如果我没有弄错,他们两人都做了同样的事情。

我做错了什么? 以及如何使用iptables规则,比如浏览器的配置?

谢谢!

0 个答案:

没有答案