0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[備忘録]dockerでネットワークをローカル専用にするなら、ポートに自分のローカルIPを指定しよう

0
Last updated at Posted at 2025-10-13

ガチの備忘録なので、外部からのアクセスを100%遮断できるかどうかについては保証しません
また、個人の見解を含みます

この記事はwindows11環境のdocker desktopを対象とします。
Linuxでは、ローカルipの指定はうまく動作しない可能性があります。
また、docker desktop for win、4.48.0ではバグによりdnsの例は動作しません。

Docker はデフォルトで iptables を用いてブリッジネットワークやポート公開に必要なルールを自動作成します(DOCKERDOCKER-USER 等)。そのため何も設定しなければホストの任意インターフェース(0.0.0.0)でポートを公開することがあり、ルーターで外向きのポートフォワーディングや UPnP が有効になっていると外部から到達可能になることがあります。
そのため、dockerを同じネットワークでしか使わない場合は、自分のローカルipアドレスを指定しましょう。
この指定はホストがそのIPを持っている場合に限り、接続先として192.168.0.31を指定した場合でのみアクセスできるようになります。外部からのアクセスは未検証です。
もじ自分のコンピューターのみ(= ループバック)アクセス可能にするなら、127.0.0.1を指定しましょう
ネットでは192.168*を指定している記事は記憶の限りでは見当たりませんでした。

また、数字をハードコードせず .env にまとめておくと、環境ごとに衝突を避けつつ安全に運用できます。
.envでの置換がうまくいっているか確認するには、

docker-compose config

を使用します。

.env の設定例

# .env

LOCAL_IP=192.168.0.31   # 自分のPCのローカルIP
DNSMASQ_PORT=53         # 公開したいポート番号

docker-compose

services:
  dnsmasq:
    container_name: dnsmasq
    image: strm/dnsmasq
    restart: always
    ports:
      - "${LOCAL_IP}:${DNSMASQ_PORT}:53/udp"
    cap_add:
      - NET_ADMIN
      - NET_RAW
    command: ["--no-daemon", "--address=/example.net/${LOCAL_IP}"]

効果

  • 127.0.0.1を指定した場合は、pythonサーバーに127.0.0.1経由でのみアクセスでき、192.168.0.31経由ではアクセスできません。
  • 192.168.0.31を指定した場合、pythonサーバーには192.168.0.31経由(ルーター経由)でのみアクセスでき、 127.0.0.1経由ではアクセスできません。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?