カテゴリー: 未分類

  • ERROR: cannot create network conflicts with network  networks have overlapping IPv4

    ERROR: cannot create network conflicts with network networks have overlapping IPv4

    はじめに

    Docker composeなどを使い、コンテナを立ち上げるとネットワークコンフリクトが発生することがある。

    Creating network "xxx_net" with driver "bridge"
    ERROR: cannot create network 8f6775a9e84cef2a10d6bbbf (br-8f6775a94c): conflicts with network acdac1 (br-605313): networks have overlapping IPv4

    原因

    既にこのネットワークを使うdockerネットワークが存在する

    対処

    使っていないネットワークが多い場合、整理する

    # docker network prune
    WARNING! This will remove all networks not used by at least one container.
    Are you sure you want to continue? [y/N] y
    Deleted Networks:
    

     

  • nginxでIPもしくはuseragentでアクセス制限をする

    nginxでIPもしくはuseragentでアクセス制限をする

    はじめに

    ここ数年、nginxを使う企業も増えて来た。今回はnginxのアクセス制御についてまとめる

    特定のIPからのアクセスを停止する

    例えばDoS攻撃。Firewallで止めるのが一般的だが、Nginxで止めたい時もある。

    その場合、拒否したいIPを先に書いて、allow allで締める。

            location / {
                # block below IPs
                deny 123.11.12.3;
                deny 10.1.2.3;
                allow all;
            }

    特定のIPから”のみ”アクセスを停止する

    allowを先に書いて、deny allで締める。

            location / {
                # block below IPs
                allow 123.11.12.3;
                allow 10.1.2.3;
                deny all;
            }

    nginxでIPもしくはuseragentでアクセス制限をする

    Nigixで複雑な制御をしたいときがある。 例えばnginxでIPもしくはuseragentでアクセス制限などだ。 set関数を使うと、if文のように管理しやすい

    サンプルコード

    nginxの設定ファイルで以下のように設定 123.12.1.1[2-9]のIPであれば許可 もしくはUseragentがFireFoxの場合はベーシック認証をかける設定

    server {
    
      set $allow_ip 0;
      if ($http_x_forwarded_for ~ ^123\.12\.1\.1[2-9]$){
        set $allow_ip 1;
      }
    
      set $fx 0;
      if ($http_user_agent ~ FireFox){
        set $fx 1;
      }
      set $conditions "${allow_ip}${fx}";
    
    
    
      location / {
        if ($conditions = 00){
          return 403;
        }
        if ($conditions = 01){
          set $auth_basic "basic auth";
        }
    
        auth_basic  $auth_basic;
        auth_basic_user_file "/etc/nginx/himitsu.htpasswd";
    }