主要出现在安装了docker 后。
sudo systemctl status dhcpcd
可以看到
标红的 route socket overflowed - learning interface state
然后一堆 veth开头的网卡问题。
这里,我们打开 /etc/dhcpcd.conf 文件,添加下面部分:
denyinterfaces veth*
保存并重启。解决问题。
主要出现在安装了docker 后。
sudo systemctl status dhcpcd
可以看到
标红的 route socket overflowed - learning interface state
然后一堆 veth开头的网卡问题。
这里,我们打开 /etc/dhcpcd.conf 文件,添加下面部分:
denyinterfaces veth*
保存并重启。解决问题。
wifi 连接命令:iwconfig wlan0 essid “wifi名称” key 密码 此方式有一定缺陷,目前已知只能连接WEP方式或者无密码的wifi
#查看所有无线网络,一般是wlan0 sudo iwconfig #启动无线网卡接口服务 sudo ip link set wlan0 up #扫描无线网络,默认使用所有网卡搜索 sudo iwlist scanning | more #使用特定网卡搜索网络 sudo iwlist wlan0 scan | more sudo iwlist eth0 scan #连接到特定网络 iwconfig wlan0 essid "MyHome" #如果网络是加密的,密码是0123456789,那么就输入命令 iwconfig wlan0 essid "MyHome" key 0123-4567-89 #如果正常的话,输入 iwconfig wlan0 就可以看到连接正常的各项参数了。 #启用无线网卡 ifconfig wlan0 up #如果是用DHCP获取IP的,那么用dhclient或dhcpcd获取ip dhclient wlan0 或 dhcpcd wlan0
通过ssh方式登录你的路由器
输入如下命令:
sed -i 's/\tdetect_package/\t# detect_package/g' /koolshare/scripts/ks_tar_install.sh
最近使用了最新版的ubuntu 20.04运行一些服务,然后发现服务器经常出现网络不通的情况,主要是一些域名无法解析。
检查/etc/resolv.conf,发现之前修改的nameserver总是会被修改为127.0.0.53,无论怎么改都 会被替换回来。
查看/etc/resolv.conf这个文件的注释,发现开头就写着这么一行:
这说明这个文件是被systemd-resolved这个服务托管的。
通过netstat -tnpl| grep systemd-resolved查看到这个服务是监听在53号端口上。
查了下,这个服务的配置文件为/etc/systemd/resolved.conf,大致内容如下
[Resolve] DNS=1.1.1.1 1.0.0.1 #FallbackDNS= #Domains= LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yes
如果我们要想让/etc/resolve.conf文件里的配置生效,需要添加到systemd-resolved的这个配置文件里DNS配置项(如上面的示例,已经完成修改),然后重启systemd-resolved服务即可。
sudo systemctl restart systemd-resolved
# 替换brew.git: cd "(brew --repo)" # 中国科大: git remote set-url origin https://mirrors.ustc.edu.cn/brew.git # 清华大学: git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git # 替换homebrew-core.git: cd "(brew --repo)/Library/Taps/homebrew/homebrew-core" # 中国科大: git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git # 清华大学: git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git # 替换homebrew-bottles: # 中国科大: echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile source ~/.zsh_profile # 清华大学: echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile source ~/.zsh_profile # 应用生效: $ brew update
# 重置brew.git: cd "(brew --repo)" git remote set-url origin https://github.com/Homebrew/brew.git # 重置homebrew-core.git: cd "(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://github.com/Homebrew/homebrew-core.git
同时按着option+command+F5,是F5不是5,把勾选的 “启用鼠标键”去掉就好了。
wsl2每次启动后,ip都是变化的,我们也没法进行固定,因此除了宿主机,其他机器无法对其进行直接访问。于是我们就需要将其端口和windows端口进行绑定/转发。
使用 docker desktop for windows ,然后 enable wsl2 , 然后绑定你的 wsl2服务。
然后 bash进入 linux子系统, docker run xxx -p 1234:1234 xxx 就可以了。
这样外部就可以访问 宿主ip+1234端口 对这个服务进行访问了。
如果有些东西,用docker反而麻烦一些,因此不愿意使用docker来运行,就需要用到这里了。
编写powershell脚本:forward.ps1
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '" $found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'; if( $found ){ ` $remoteport = $matches[0]; ` } else{ ` echo "The Script Exited, the ip address of WSL 2 cannot be found"; ` exit; ` } #[Ports] #All the ports you want to forward separated by coma $ports=@(80,443,22); #[Static ip] #You can change the addr to your ip config to listen to a specific address $addr='0.0.0.0'; $ports_a = $ports -join ","; #Remove Firewall Exception Rules iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' "; #adding Exception Rules for inbound and outbound Rules iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP"; iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP"; for( $i = 0; $i -lt $ports.length; $i++ ){ ` $port = $ports[$i]; ` iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr"; ` iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport"; ` }
请自行 替换 命令中的 $ports=@(80,443,22) 为你所需要的端口们。我这里只转发 80、443、22这3个端口。
linux-start.bat:
wsl -d Ubuntu-20.04 -u root /etc/init.wsl
其中 Ubuntu-20.04
是我的 wsl2 子系统名,通过 wsl -l
查看
init.wsl
文件 vim /etc/init.wsl :#! /bin/sh service nginx restart service ssh restart service cron restart service php7.4-fpm restart
需要啥服务,自己加吧~!
参考:windows server 2019 使用wsl2 开机挂载 物理磁盘
触发器里面,建议设置延迟 30秒。
这样,开机后,wsl2 中的服务,也就自动start了。
若要列出 Windows 中的可用磁盘,请运行:
wmic diskdrive list brief
磁盘路径位于 “DeviceID” 列下。 通常在 \.\PHYSICALDRIVE*
格式下。
确定磁盘后,运行以下内容:
wsl --mount--bare
这会使磁盘在 WSL 2 中可用。
附加后,可以通过在 WSL 2 中运行以下命令列出该分区:
lsblk
这会显示可用块设备及其分区。
在 Linux 内,块设备被标识为 /dev/<Device><Partition>
。 例如,/dev/sdb3 是磁盘的第3部分 sdb
。
示例输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 1G 0 disk ├─sdb2 8:18 0 50M 0 part ├─sdb3 8:19 0 873M 0 part └─sdb1 8:17 0 100M 0 part sdc 8:32 0 256G 0 disk / sda 8:0 0 256G 0 disk
如果不知道磁盘或分区的文件系统类型,可以使用以下命令:
blkid
这会在 “) ” 格式下输出检测到的文件系统类型 (TYPE="<Filesystem>"
。
确定要装载的分区后,请在每个分区上运行以下命令:
wsl --mount--partition --type
wsl --unmount
提供一个百度盘下载地址(因为超了4G,没会员,所以压缩分卷了):链接: https://pan.baidu.com/s/1zZ2VEUgYX2zEe0FLmy5DiQ 提取码: fuka
打开 posershell(管理员),输入:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Windows server是没有Windows应用商店的,所以我们需要下载wsl系统的离线安装包,这里我选择下载kali,如果需要下载其他系统,可以点击下方链接自行下载或者从官方文档下载。官方下载速度非常慢,这里推荐大家使用IDM下载,我当前下载好了kali,并上传到了百度网盘(链接:https://pan.baidu.com/s/1GiNDbWQtcXbCa2ecrwiw9w 提取码:h7mg)
还有一个开源的WSL系统,