iptables --uid-owner | - фильтрация gid-owner не работает в docker пользовательских сетях - PullRequest
0 голосов
/ 13 февраля 2020

Я создал небольшой docker -компонентный проект для воспроизведения этого поведения. Контейнер с network_mode: bridge может разрешить домен, но другой с пользовательской сетью приведет к ошибке неверный адрес . Я добавил проверку обеих сетей. Они выглядят одинаково, но почему фильтр не работает в пользовательской сети и как заставить его работать? Это по замыслу или это может быть ошибка docker? Заранее спасибо!

docker -compose.yml

version: "3.4"

x-iptables:
  &default-iptables
  image: vimagick/iptables
  cap_add:
    - NET_ADMIN
  command: >
      sh -c '
        adduser -D admin
        iptables -P OUTPUT DROP &&
        iptables -A OUTPUT -p udp -m owner --gid-owner admin -j ACCEPT &&
        iptables -A OUTPUT -p udp -m owner --uid-owner admin -j ACCEPT &&
        echo options timeout:1>>/etc/resolv.conf &&
        su -c "ping stackoverflow.com" - admin
      '

services:
  iptables_bridge: 
    << : *default-iptables
    network_mode: bridge

  iptables_custom:
    << : *default-iptables
    networks:
      - custom

networks:
  custom:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.enable_ip_masquerade: "true"
      com.docker.network.bridge.enable_icc: "true"

docker сетевой мост проверки

[
    {
        "Name": "bridge",
        "Id": "487d2b1d5e1e514aded43adee8678125b1b9fb340fcf6f4e643198d0ea94f45d",
        "Created": "2020-02-13T13:05:41.695016429+01:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.25.0.0/16",
                    "Gateway": "172.25.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

docker проверка сети net_custom

[
    {
        "Name": "net_custom",
        "Id": "d898866753a16e360d440e4fcacdf8c92eb12f1a443bcc86a3f2be240b853400",
        "Created": "2020-02-13T14:43:17.744258173+01:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true"
        },
        "Labels": {
            "com.docker.compose.network": "custom",
            "com.docker.compose.project": "net",
            "com.docker.compose.version": "1.25.4"
        }
    }
]

Информация о системе:

docker --version
Docker version 19.03.5, build 633a0ea838

docker-compose --version
docker-compose version 1.25.4, build 8d51620a

uname -a
Linux v22019058359789001 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux

docker info
Client:
 Debug Mode: false

Server:
 Containers: 30
  Running: 3
  Paused: 0
  Stopped: 27
 Images: 100
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 4.19.0-6-amd64
 Operating System: Debian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.948GiB
 Name: v22019058359789001
 ID: QWPC:PGAF:5G72:QJGW:IIW7:3RV3:ESMO:ZYLX:UHZP:U372:RIGW:XG5Q
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support
...