WSL设置固定ip
- 由于电脑每次关机或者重启之后你就会发现wsl的ip都会发生改变,这个问题确实是让人头疼。所以就在网上找了一些设置IP固定话的一些方案。 借鉴帖子 blog.csdn.net/qq_44797987… 原文作者的思路是Wsl系统每次重启之后将ip写入windows中的hosts文件中
第一步更改hosts文件的访问权限
打开电脑进入C:\Windows\System32\drivers\etc文件夹找到hosts文件
鼠标右键点击hosts文件选择【属性】,然后点击【安全】
鼠标选中【All APPLICATION PACKAGES】点击【编辑】
在弹出的编辑页面选中【Users(DESKTOP-16IKSNE\Uses)】,然后在完全控制一栏中点击【允许】,点击【应用】
此刻你电脑上的hosts文件的访问权限已经设置成功了。
第二步 打开wsl系统 输入 【vim /opt/domain/domain.sh】命令
在弹出的编辑窗口输入【I】进入到插入模式
在该模式下将以下代码粘贴进入到窗口中
#!/usr/bin/bash
# 为 win 设置 wsl host
# win hosts 文件路径
win_hosts_path="/mnt/c/Windows/System32/drivers/etc/hosts"
# 为 wsl2 设置的域名
wsl_domain="serendipity.cn"
# 获取 wsl2 的 ip
wsl_ip=$(ifconfig eth0 | grep -w inet | awk '{print $2}')
# 判断是否已存在 wsl2 的域名,如果存在则修改,否则追加
if grep -wq "$wsl_domain" $win_hosts_path
then
# 此处因为权限问题没有直接用 sed 修改 hosts 文件
win_hosts=$(sed -s "s/.* $wsl_domain/$wsl_ip $wsl_domain/g" $win_hosts_path)
echo "$win_hosts" > $win_hosts_path
else
echo "$wsl_ip $wsl_domain" >> $win_hosts_path
fi
# 为 wsl 设置 win host
wsl_hosts_path="/etc/hosts"
win_domain="win"
win_ip=$(cat /etc/resolv.conf | grep "nameserver" | awk '{print $2}')
if grep -wq "$win_domain" $wsl_hosts_path
then
wsl_hosts=$(sed -s "s/.* $win_domain/$win_ip $win_domain/g" $wsl_hosts_path)
echo $wsl_hosts > $wsl_hosts_path
else
echo "$win_ip $win_domain" >> $wsl_hosts_path
fi
然后在键盘上按下【esc】退出【INSERT】模式同时输入 【:wq】并【回车】进行保存
备注:如果你的domain.sh脚本是从windows上上传过来的 您需要 vim 你的domain.sh文件 并输入:set ff=unix命令。 如果不是则自动忽略该备注。
然后输入 【chmod +x domain.sh】命令设置执行权限
在【/opt/domain】目录下执行 【./domain.sh】命令
执行之后打开你的hosts文件你会发现你设置的域名已经和你的wsl中的ip绑定到一块了
为了演示方便我在自己的wsl系统中安装了一个nacos当我在浏览器中输入自己设置的域名之后就会访问到自己的wsl部署的nacos
第三步 domain.sh 脚本设置开机自启
笔主用的系统是wsl中的【ubuntu】系统,所以设置起来比较简单。只需要将你的domain.sh文件拷贝到【 /etc/profile.d/】夹下面 输入【sudo cp /opt/domain/domain.sh /etc/profile.d/】即可。 这样ubuntu系统启动之后会默认执行这个文件夹下面的所有sh脚本文件。