我是linux新手,刚接触linux才2个月左右。所以我在使用路线命令时遇到了问题。
我的问题是我在 Windows 上没有与 wsl 上相同的本地 IP 地址。然而,我设法添加了另一条路由,但不是默认的路由,所以我尝试将 172.20.128.0 以太删除或将 192.168.1.0 设置为默认/主要路由,以便其他设备可以 ping 我,以及类似的其他内容。
ipconfig(在 Windows 上)
Carte Ethernet vEthernet (WSL) :
Suffixe DNS propre à la connexion. . . :
Adresse IPv6 de liaison locale. . . . .: fe80::c181:db91:a200:5517%60
Adresse IPv4. . . . . . . . . . . . . .: 172.20.128.1
Masque de sous-réseau. . . . . . . . . : 255.255.240.0
Passerelle par défaut. . . . . . . . . :
Carte réseau sans fil Wi-Fi :
Suffixe DNS propre à la connexion. . . : home
Adresse IPv6 de liaison locale. . . . .: fe80::2143:d5bf:e724:d291%5
Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.33
Masque de sous-réseau. . . . . . . . . : 255.255.255.0
Passerelle par défaut. . . . . . . . . : 192.168.1.1
路线(wsl 上的 kali-linux)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default lelievre-pc.msh 0.0.0.0 UG 0 0 0 eth0
172.20.128.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
ifconfig(wsl 上的 kali-linux)
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.134.143 netmask 255.255.240.0 broadcast 172.20.143.255
inet6 fe80::215:5dff:feab:4d29 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:ab:4d:29 txqueuelen 1000 (Ethernet)
RX packets 5898 bytes 1405127 (1.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 2414 (2.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip 地址(wsl 上的 kali-linux)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 7e:1c:de:e7:d3:ac brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 1a:65:36:61:31:f6 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:ab:4d:29 brd ff:ff:ff:ff:ff:ff
inet 172.20.134.143/20 brd 172.20.143.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.1.69/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:feab:4d29/64 scope link
valid_lft forever preferred_lft forever
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
谢谢你的阅读,并试图帮助我,我已经被这个 ping 问题困扰了大约一个星期
答案1
你确实有两个问题——一个是你标题中的问题,另一个是隐藏在其中的“真正的问题”。
- 如何在 WSL2 下更改路由
- (实)如何允许网络上的其他主机访问WSL2实例(例如
ping
等)
如果您的目标确实是第二个,那么我诚实地建议忽略第一个。 WSL2 在虚拟网卡 (vNIC) 上运行,默认情况下,该虚拟网卡在 Windows 主机下运行 NAT(通过 Hyper-V 功能的子集)。为了希望修改它,您需要将其更改为桥接接口。这不是通常支持的配置。我会指出你此信息在 Reddit 上讨论了一种可能实现这一点的方法,但引用该帖子中的警告:
可笑的是,这是未经支持、未经批准的,并且是仅通过实验产生的。不提供任何保证或责任。我只保证到目前为止它对我有用。可能会导致压力、脱发或酗酒。不要嘲笑。
:-)
实际上,我会用另一种方式表达它。它是可能的这可能会导致 WSL2 中几乎无法恢复的网络故障,甚至需要重新安装 Windows。 WSL2 网络似乎有点“脆弱”,遗憾的是,我在 Stack 上看到的一些有关故障的问题似乎从未得到解决方案。
但对于如何从网络上的其他计算机访问 WSL2 实例的真正问题,我已经在 Stack 上的其他地方写了几个答案,但从未在此处写过 Unix/Linux 的答案。
也就是说,我不会在这里重复一遍,因为它实际上不是“Linux/Unix”的东西,但我会指出这个答案。
请注意,如果您使用 Kali Linux 的主要目标是学习网络(我看到很多人在 WSL2 上使用 Kali),那么恕我直言,WSL2 并不是一个很好的解决方案。 WSL2 在很多方面都很出色,但它的网络非常有限,因为它是虚拟化运行的。
也就是说,socat
我在该答案中提供的解决方案是一种有趣的网络黑客技术,您可能会从中学到一些与网络相关的东西 - 我知道我做到了!