前提
phpによるアプリ開発のため、開発環境の設計をしようとしています。
・OSはWindows10
・phpはDockerコンテナでホストする
・DockerDesktopは使用しない
・DockerコンテナはWSL2(Ubuntu20.04)でホストする
・windowsは社内ネットワークにVPN接続している
〇イメージ
実現したいこと
wsl2内のdockerコンテナ(phpアプリ)から、wslのホストであるwindowsとVPN接続している社内ネットワーク内のDB(sqlServer)に接続したいです。
発生している問題
wsl上でsqlcmdでDBと接続を試みるが、Timeout Expiredとなる。
sqlcmd -S xxx.xxx.xxx.xxx,1433 -U username -P password
試したこと
〇windows環境
・SQL Server Manegement StudioでのDBへの接続・・・〇
・nslookupコマンドでDBサーバーへの名前解決・・・〇
・pingコマンドによる疎通・・・〇
・ipconfigコマンドでwslのipアドレスの確認・・・〇
〇wsl環境
・sqlcmdでのDBへの接続・・・×
・nslookupコマンドでDBサーバーへの名前解決・・・×
・pingコマンドによる疎通・・・×
wsl(Ubuntu)は仮想環境であり、windowsではないのでDBのipに直接アクセスすることはできないことはわかります。
また当然、wsl上からpingによる疎通やnslookupでの名前解決もできないだろうこともなんとなくイメージしております。
dockerはportを指定することで、ホストであるwslのportと紐づけることができ、その際コンテナ内からはhost.docker.internalでwslのipアドレスを参照できることは確認しています。
わからないこと
・VPNの設定によるかもしれないですが、そもそもこの構成でphpコンテナからDBへアクセスは可能なのでしょうか。
・wslにはipアドレスが振られることでwindows側からアクセスできますが、wsl側からwindowsにアクセスはできるのでしょうか。
・ひょっとしてプロキシやポートフォワーディングなどの設定が必要なのでしょうか。
ネットワークとしては仮想環境内(wsl)に仮想環境(docker)があるイメージと捉えております。
社内のインフラ担当にきければよいのですが、wslに知見のある方がおらず自身で調査しております。
ネットワークに関しては初歩レベルなので、ご教授いただければ幸いです。
あなたの回答
tips
プレビュー