为啥这个 iptables 的配置无法工作? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raincious
V2EX    服务器

为啥这个 iptables 的配置无法工作?

  •  
  •   raincious 2015-06-18 11:57:23 +08:00 3042 次点击
    这是一个创建于 3842 天前的主题,其中的信息可能已经有所发展或是发生改变。

    故事是我在配置一个OCServ服务器,然后为了安全,当然要走个HTTP Proxy,否则分享出去被人用来下BT就会有麻烦了。

    然后,HTTP Proxy配置是正常的,通过

    wget www.google.com -e use_proxy=yes -e http_proxy=http://127.0.0.1:3128 

    访问没问题

    VPN服务器也是正常的,可以正常连接和访问。

    但是一旦加上下面这句,80端口就超时无法打开了,同时Nginx(HTTP Proxy)日志里没有提到有访问记录(可能根本没链接到嘛),其他端口倒是仍然正常(当然

    iptables -t nat -A PREROUTING -s 192.168.251.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 

    然后我改成

    iptables -t nat -A PREROUTING -i vpns+ -p tcp --dport 80 -j REDIRECT --to-port 3128 

    也不行。

    整个配置在这里:

    #!/bin/bash # iptables iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport (SSH端口,不给你看) -j ACCEPT # ocserv iptables -t filter -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -p udp -m udp --dport 443 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -d 192.168.251.0/24 -j DROP iptables -t filter -A FORWARD -d 192.168.251.0/24 -j ACCEPT iptables -t nat -A PREROUTING -s 192.168.251.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 (就是这神秘的一句 iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 3128 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p udp --dport 53 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 53 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 21 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 80 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 443 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 993 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 465 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp -j REJECT --reject-with tcp-reset iptables -t filter -A FORWARD -s 192.168.251.0/24 -j DROP iptables -t nat -A POSTROUTING -s 192.168.251.0/24 -j MASQUERADE /opt/ocserv/sbin/ocserv -c /opt/ocserv/etc/config 

    求解,感谢!
    (俺好菜啊,怎么办)

    第 1 条附言    2015-06-18 14:27:06 +08:00
    这是新的,能用的iptables配置。

    #!/bin/bash

    # DEFAULT
    iptables -P INPUT DROP
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -A INPUT -p tcp --dport 28194 -j ACCEPT

    # OCserv
    iptables -t filter -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p udp -m udp --dport 443 -j ACCEPT

    iptables -t filter -A FORWARD -s 192.168.251.0/24 -d 192.168.251.0/24 -j DROP
    iptables -t filter -A FORWARD -d 192.168.251.0/24 -j ACCEPT

    iptables -t nat -A PREROUTING -s 192.168.251.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
    iptables -t filter -A INPUT -s 192.168.251.0/24 -p tcp --dport 3128 -j ACCEPT

    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p udp --dport 53 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 53 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 21 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 443 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 993 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp --dport 465 -j ACCEPT
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -p tcp -j REJECT --reject-with tcp-reset
    iptables -t filter -A FORWARD -s 192.168.251.0/24 -j DROP

    iptables -t nat -A POSTROUTING -s 192.168.251.0/24 -j MASQUERADE

    /opt/ocserv/sbin/ocserv -c /opt/ocserv/etc/config
    6 条回复    2015-06-18 20:43:05 +08:00
    ryd994
        1
    ryd994  
       2015-06-18 13:31:28 +08:00 via Android   1
    squid 配置里加了intercept没?http://www.squid-cache.org/Doc/config/http_port/
    ryd994
        2
    ryd994  
       2015-06-18 13:36:58 +08:00 via Android   1
    3128是谁在listen?
    是bind0.0.0.0还是只bind本地?
    bind全部interface试试,如果行的话再做讨论。

    另外iptables filter表有打开3128端口么?redirect之后就不是允许80而是允许3128了。filter表在nat表之后
    elyamen
        3
    elyamen  
       2015-06-18 13:37:51 +08:00   1
    破头像害我点了两次
    iCodex
        4
    iCodex  
       2015-06-18 14:18:07 +08:00   1
    iptables -t nat -A => iptables -t nat -I
    raincious
        5
    raincious  
    OP
       2015-06-18 14:26:00 +08:00
    @ryd994 好吧,我做了测试,貌似如果直接

    iptables -A INPUT -s 192.168.251.0/24 -p tcp --dport 3128 -j ACCEPT,

    然后让Nginx听全部端口的话就可以连接了

    再然后我看了一眼Nginx的日志:

    192.168.251.46 - - [18/Jun/2015:02:16:35 -0400] "GET /m/gne/suggest/v2?q=http%3A%2F%2Fportquiz.net%2Fddd.avi&hl=zh-CN&app=iss&appv=141338691&platform=android&pff=1&feeds=qs,ns HTTP/1.1" 404 151 "-" "Android/1.0 (umts_everest I.7.1-45)"

    192.168.251.46....

    (唔脸,原来真相是这样……
    ryd994
        6
    ryd994  
       2015-06-18 20:43:05 +08:00 via Android   1
    @raincious 是这样的
    某些系统内核禁止其他端口转发到lo,而且你也没有redirect 到127.0.0.1

    源是外面的IP并没有错
    DNAT工作方法就是这样:直接改包头

    其实如果你如果是劫持,而且网站比较多的话还是建议squid比较方便
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2049 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 16:12 PVG 00:12 LAX 08:12 JFK 11:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86