# 送信元アドレスを許可する(ホワイトリスト形式)


1. 許可するIPアドレスを用意する
    - アドレスが複数ある場合はカンマ区切りにする
2. ingress に `nginx.ingress.kubernetes.io/whitelist-source-range` annotation を設定する([参考](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#whitelist-source-range))
```bash:設定例
$ kubectl edit growi-app-2
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ...
    nginx.ingress.kubernetes.io/whitelist-source-range: 192.0.2.0/24,198.51.100.1,198.51.100.2,198.51.100.3,...
    ...
```

## 反映後の nginx.conf

```bash
$ kubectl -n nginx-ingress exec ds/nginx-ingress-controller -- cat /etc/nginx/nginx.conf | less
...
                        allow 198.51.100.1;
                        allow 198.51.100.10;
                        allow 198.51.100.100;
                        allow 198.51.100.101;
                        allow 198.51.100.102;
                        allow 198.51.100.103;
                        allow 198.51.100.104;
                        allow 198.51.100.105;
                        allow 198.51.100.106;
                        allow 198.51.100.107;
                        allow 198.51.100.108;
                        allow 198.51.100.109;
...
```

- 反映した Ingress の location に対して、allow が反映されていることが確認できた
- **1024 個程度では問題ないことを確認できた**

## フィルタ時の挙動

- 許可されているアドレスからのアクセスは、通常どおり表示される
- 許可されていないアドレスからのアクセスは、nginx のベーシックな 403 画面が表示される
    ![image.png](/attachment/60234470b536bb0048568de4)

## 便利情報

- アドレス作成方法TIPS
    ```bash
    $ docker run ruby:2.7-alpine ruby -e "require 'ipaddr'; ip = IPAddr.new('192.0.2.0/24').to_i; puts 1024.times.map { |i| IPAddr.new(ip + i, Socket::AF_INET).to_s }.join(',')"
    ```
    - `1024` のところを任意の数字に変えることで、アドレス生成数を調整可能



---

## Page Navigation

- Canonical URL: https://tips.weseek.co.jp/Tips/Kubernetes/nginx-ingress-controller/送信元アドレスを許可する(ホワイトリスト形式)
- Permalink: https://tips.weseek.co.jp/602344e4b536bb0048568df5
- Parent: [nginx-ingress-controller](/60234308b536bb0048568dc5.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 1 total
  - [HTTPエラー時の表示ページをカスタマイズ](/60234bdfb536bb0048568e8e.md)
- Last updated: 2021-02-10T02:49:52.298Z by ryu
- Full page listing (all children regardless of count): https://tips.weseek.co.jp/_api/v3/page-listing/children?id=602344e4b536bb0048568df5
