↩️

LinuxでダミーのIPをローカルに付ける時のメモ

2024/10/15に公開

おはこんばんにちわ
狸です

さっそく本題ですがレガシーな開発をしていると以下のように設定ファイルで

hoge_server_ip=xxx.xxx.xxx.xxx

こんな風に直接商用のIPが書かれてるから、ローカルでテストする時にはlocalhostに設定しなおして、ローカルにダミーのサーバ建てて実行してね。

みたいな雑な指示をよく見かけます。

私は現在、開発環境を案件毎にWSL上に分けて構築しているので暇がある時ならIPを割り振ったDockerコンテナを動かして対応するのですが、ちょろっと動作確認する為だけの時は面倒臭いのでローカルにIPを生やして対応しています、これはその時のメモです。

やり方

さて早速実行するコマンドです

$ sudo ip link add deth0 type dummy
$ sudo ip link set dev deth0 up
$ sudo ip addr add xxx.xxx.xxx.xxx/xx dev deth0

やってる事は簡単で

  • ダミーの仮想NICdeth0を生成
  • deth0を有効化
  • deth0に使いたいIPを追加

これでローカルからxxx.xxx.xxx.xxxへの通信はダミーのIF経由でローカルに繋がるので0.0.0.0等でListenしていれば通信が届くようになります。

ちなみに、最後のコマンドのIPを変えれば以下のように複数IPを割り振る事も簡単です。

$ sudo ip link add deth0 type dummy
$ sudo ip link set dev deth0 up
$ sudo ip addr add 123.123.123.123/24 dev deth0
$ ip a s deth0
3: deth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 3a:14:b7:e5:46:c2 brd ff:ff:ff:ff:ff:ff
    inet 123.123.123.123/24 scope global deth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3814:b7ff:fee5:46c2/64 scope link
       valid_lft forever preferred_lft forever
$ sudo ip addr add 123.123.123.124/24 dev deth0
$ ip a s deth0
3: deth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 3a:14:b7:e5:46:c2 brd ff:ff:ff:ff:ff:ff
    inet 123.123.123.123/24 scope global deth0
       valid_lft forever preferred_lft forever
    inet 123.123.123.124/24 scope global secondary deth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3814:b7ff:fee5:46c2/64 scope link
       valid_lft forever preferred_lft forever

尚、この設定は再起動で消えてしまうので永続化したい場合はディストリに従った永続化の設定を入れればいいんだけど、そこまでするかどうかをDocker化するかどうかの分水嶺として判断しています。

P.S.

NICを消したい場合は以下で消える

# sudo ip link add deth0

検証環境とかでDocker入れれないような場合にも使うんだけどインフラの領分と被るから確認出来たらすぐに消すようにしてる。

Discussion