English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

CentOS7 Docker 방화벽 간단 설정 튜토리얼

CentOS7 Docker防火墙的简单配置

禁用 firewalld 服务

systemctl disable firewalld
systemctl stop firewalld

安装 iptables 防火墙服务

yum install iptables-services

创建 iptables 配置脚本

cat >> /usr/local/bin/fired.sh <<'EOF'
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT
#iptables -A INPUT -p tcp --dport 80 -i eth0 -m state -state NEW -m recent -update -seconds 60 -hitcount 50 -j DROP
#iptables -A OUTPUT -o eth0 -m owner -uid-owner vivek -p tcp --dport 80 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP
iptables -A INPUT -p tcp -i eth0 --dport 22 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 2376 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 --sport 1024:65534 -j ACCEPT
# OpenVPN Configuration
# iptables -A POSTROUTING -t nat -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# iptables -A FORWARD -i tun+ -j ACCEPT
# iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p TCP -i eth0 --dport 10173 --sport 1024:65534 -j ACCEPT
# iptables -A INPUT -p UDP -i eth0 --dport 10173 --sport 1024:65534 -j ACCEPT
EOF
chmod +x /usr/local/bin/fired.sh

시스템 시작 시 추가 합니다

cat >> /etc/rc.d/rc.local <<EOF
# Firewall & Docker
/usr/bin/systemctl iptables.service를 시작합니다
/usr/local/bin/fired.sh
/usr/bin/systemctl docker를 시작합니다
EOF
chmod +x /etc/rc.d/rc.local

서비스를 자동으로 시작하지 않도록 비활성화합니다

# 注: Docker 시작 시 자동으로 몇 가지
systemctl iptables.service를 비활성화합니다
systemctl docker를 비활성화합니다

docker에서 centos7의 몇 가지 문제점

centos의 docker에서 mysql을 설치할 때 chown mod 오류가 발생합니다 /var/lib/mysql permission denied, 아래의 방법 1을 통해 해결할 수 있습니다.

centos에서 데이터 볼륨을 마운트하면, 컨테이너 내에서 데이터 볼륨에 접근할 때 permission denied 오류가 발생합니다. 아래의 방법 1을 통해 해결할 수 있습니다.

1.Centos7안전 Selinux는 일부 안전 권한을 금지하여 mysql과 mariadb이 마운트할 때 문제가 발생합니다/var/lib/mysql을 사용할 때 다음과 같은 메시지가 표시됩니다:

[root@localhost mariadb]# docker run -d -v ~/mariadb/data/:/var/lib/mysql -v ~/mariadb/config/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=‘123456‘ test01/mariadb
19c4aa113c610f53f9720ee806e3c918dd18d21dff75c043bdd6db60011a135d
[root@localhost mariadb]# docker ps -a
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS          NAMES
19c4aa113c61  test01/mariadb  "docker-entrypoint.sh" 4 seconds ago Exited (1) 1 seconds ago            desperate_kelle

logs 명령어로 확인해 보면, 표시된 메시지는 다음과 같습니다: chown: ‘/var/lib/mysql/....‘: 권한이 거부되었습니다

따라서, 해결 방법이 세 가지 있습니다:

  • docker run에 추가 --privileged=true 컨테이너에 특정 권한 추가
  • selinux를 종료
  • selinux에 규칙을 추가하고 마운트 디렉토리를 수정

2. 때로는 포트 매핑이 있는 컨테이너를 시작할 때, 다음과 같은 알림이 나타날 수 있습니다:

1 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 52080 -j DNAT --to-destination 192.168.20.22:52080 ! -i docker0: iptables: No chain/목표/그 이름에 맞게 일치

이 것, 검색해도 설명이 없습니다. http:을 참조했습니다.//www.lxy520.net/2015/09/24/centaos-7-도커-기-동-보/이 문서는 iptables 파일을 수정하도록 주장하지만, CentOS 만 해당됩니다.7이 파일이 존재하지 않거나 iptables 서비스가 설치되지 않았을 수도 있으며, 결국 호스트 재시작 후 복구되었습니다. 그 동안 firewall를 사용해 시도했습니다.-cmd 명령어로防火墙查询和停止

결론

이 문서의 전체 내용이 끝났습니다. 이 문서의 내용이 여러분의 학습이나 업무에 참고 가치가 있기를 바랍니다. 의문이 있으시면 댓글을 남겨 주세요. 감사합니다. 노래 튜토리얼에 대한 지원에 감사합니다.

선언: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두 소유합니다. 이 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 웹사이트는 소유권을 가지지 않으며, 인공적인 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있을 경우, 이메일을 notice#w로 보내 주세요.3codebox.com(이메일을 보내면, #을 @으로 변경해 주세요. 신고하고 관련 증거를 제공하시면, 해당 콘텐츠가 저작권 침해로 확인되면 즉시 해당 콘텐츠를 삭제할 것입니다。)

당신이 좋아할 만한 것