V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Nin
V2EX  ›  Linux

请问如何调教 Ubuntu 的 iptables

  •  
  •   Nin · 2015-09-17 13:06:13 +08:00 · 4180 次点击
    这是一个创建于 3360 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最后一句 iptables -A INPUT -j REJECT 能把之前的规则都否定掉,无论你打开了哪个端口,除了正在连接的 22 不受影响,apt-get 都无法使用

    同样的规则贴到 Debian 上却没什么问题。
    20 条回复    2015-12-11 16:26:39 +08:00
    jimzhong
        1
    jimzhong  
       2015-09-17 13:22:30 +08:00
    是不是要在之前加这么一句, iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 。
    wezzard
        2
    wezzard  
       2015-09-17 13:30:02 +08:00
    重啓系統可以讓所有未被保存的規則都幹掉。
    Nin
        3
    Nin  
    OP
       2015-09-17 13:50:06 +08:00
    @jimzhong 加了,没用
    suckMyballs
        4
    suckMyballs  
       2015-09-17 14:23:30 +08:00
    /etc/init.d/iptables stop
    nekoyaki
        5
    nekoyaki  
       2015-09-17 19:17:37 +08:00
    @suckMyballs ubuntu 不能这么干,它不像 centos , ubuntu 的 /etc/init.d/下没有 iptables 这个脚本。

    PO 主你执行 iptables -F 试一下,清空所有 iptables 规则。
    nekoyaki
        6
    nekoyaki  
       2015-09-17 19:18:18 +08:00
    另外我觉得 PO 主最好贴一下到底是怎样的规则……
    wgjak47
        7
    wgjak47  
       2015-09-17 19:46:57 +08:00
    如果 iptables -A INPUT -j REJECT 能把前面的规则都否定掉,那没有理由 22 还会开放啊。所以还是把 iptables -L 的结果贴出来看看。
    Nin
        8
    Nin  
    OP
       2015-09-17 21:02:19 +08:00
    @nekoyaki
    @wgjak47

    -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-port-unreachable
    -A FORWARD -j ACCEPT
    -A OUTPUT -j ACCEPT

    很简单的规则
    wgjak47
        9
    wgjak47  
       2015-09-17 21:36:42 +08:00
    iptables -L 的输出?
    @Nin
    Nin
        10
    Nin  
    OP
       2015-09-17 21:42:18 +08:00
    nekoyaki
        11
    nekoyaki  
       2015-09-17 22:03:19 +08:00
    规则看不出来啥问题。仔细看了一下你的问题描述,你说的是 aptget 无法用,那估计是出站包不通,你看看是不是网关或者 IP 配置得不对。
    adrianzhang
        12
    adrianzhang  
       2015-09-17 22:08:16 +08:00
    dns 被屏蔽了, apt-get 得不到解析。
    izoabr
        13
    izoabr  
       2015-09-17 22:32:36 +08:00
    多了个 chain

    fail2ban-ssh
    wzxjohn
        14
    wzxjohn  
       2015-09-17 22:51:32 +08:00
    @izoabr 这是对的没问题。
    按照楼主的截图,一条
    accept all 0.0.0.0 0.0.0.0 应该直接让后面的所有规则失效了才是。。。比较奇怪。。。
    Nin
        15
    Nin  
    OP
       2015-09-17 23:25:13 +08:00
    @wzxjohn

    第一条是本地回环
    我比较奇怪的是同样的规则在 Debian 上无任何问题还有就是 linode 的 Ubuntu 也没问题

    看检测了下日志, 443 端口正常有数据接收但到了最后一条 REJECT 那又被丢弃了。。。
    wzxjohn
        16
    wzxjohn  
       2015-09-17 23:27:37 +08:00
    @Nin iptables 是顺序执行的,按理说不可能匹配到放行又被拒绝。。。这个比较迷。。。
    batilo
        17
    batilo  
       2015-12-11 09:29:50 +08:00
    目前我也遇到了这个问题,楼主所说的 apt-get 无法使用是因为机器无法访问外网。

    1. 如果 INPUT 默认策略为 DROP ,则所有 OUTPUT 规则失效

    2. 如果添加一条 DROP 或者 REJECT 规则在 INPUT 最后,则 OUTPUT 规则失效
    batilo
        18
    batilo  
       2015-12-11 16:03:49 +08:00
    好像找到问题所在了, 楼主你是不是和我一样也是开启了锐速这个东西?

    我在关闭锐速之后, iptables 规则就能够正常使用。 通过 Google 找到了这样一篇文章:

    http://www.cnblogs.com/guangshan/p/4837552.html
    Nin
        19
    Nin  
    OP
       2015-12-11 16:22:58 +08:00 via iPhone
    @batilo 嗯,后来我无意中也发现好像是锐速的问题,如果先装锐速再配置 iptables 就会造成 iptables 失效,反过来好像没事
    Nin
        20
    Nin  
    OP
       2015-12-11 16:26:39 +08:00 via iPhone
    @batilo 后来在一台 Debian 上试了先装锐速,再配置 iptables 发现出现一样问题,早先我以为是 Ubuntu 的问题,后来我删了锐速,把 iptables 先配置完再装锐速好像暂时没出过问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3413 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.