代码之家  ›  专栏  ›  技术社区  ›  Benjamin

Iptables规则块docker服务

  •  0
  • Benjamin  · 技术社区  · 3 年前

    我有安装了VPN(ikev2/strongswan)的VPS服务器直接连接到系统(没有Docker),而且我还有Docker,它应该向世界公开一些服务。

    由于我的VPN是使用iptables正确配置的,我发现我的docker服务无法通过ip:port从world访问。。

    这是我的 iptables -L

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:isakmp
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:ipsec-nat-t
    ACCEPT     all  --  anywhere             anywhere            
    DROP       all  --  anywhere             anywhere            
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  10.10.10.0/24        anywhere             policy match dir in pol ipsec proto esp
    ACCEPT     all  --  anywhere             10.10.10.0/24        policy match dir out pol ipsec proto esp
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    DROP       all  --  anywhere             anywhere            
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain DOCKER (0 references)
    target     prot opt source               destination         
    
    Chain DOCKER-ISOLATION-STAGE-1 (0 references)
    target     prot opt source               destination         
    
    Chain DOCKER-ISOLATION-STAGE-2 (0 references)
    target     prot opt source               destination         
    
    Chain DOCKER-USER (0 references)
    target     prot opt source               destination         
    

    如何使用iptables打开docker服务?

    提前谢谢

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -F
    iptables -Z
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -p udp --dport  500 -j ACCEPT
    iptables -A INPUT -p udp --dport 4500 -j ACCEPT
    iptables -A INPUT -i docker0 -j ACCEPT
    iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
    iptables -A FORWARD -i docker0 -o lo -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.10/24 -j ACCEPT
    iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.10/24 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.10.10.10/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.10.10.10/24 -o eth0 -j MASQUERADE
    iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.10/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
    iptables -A INPUT -j DROP
    iptables -A FORWARD -j DROP
    

    没有 iptables -A FORWARD -j DROP 一切正常

    0 回复  |  直到 3 年前
        1
  •  0
  •   Benjamin    3 年前

    固定的。 请在iptables安装命令之后安装Docker,因为Docker安装自己的iptables规则。

        2
  •  0
  •   Houssem Kouki    3 年前