在办公室,我们有用于访问互联网的无线局域网和用于访问内部网的以太网电缆。我想配置我的笔记本电脑,以便我可以同时使用两者,但到目前为止我还无法做到这一点。我发现这答案,但我没有足够的网络知识来将其应用于我的情况。
如果我连接到两个网络,我可以访问互联网,但不能访问内部网,而无需明确指定接口。
不起作用:
ping 10.158.51.11
作品:
ping -I enp0s20u2 10.158.51.11
我当前的配置:
~ ip addr
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: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:85:08:41:a2:6c brd ff:ff:ff:ff:ff:ff
inet 10.161.253.58/21 brd 10.161.255.255 scope global dynamic noprefixroute wlp2s0
valid_lft 12964sec preferred_lft 12964sec
inet6 fe80::ad6b:7406:af47:5b33/64 scope link noprefixroute
valid_lft forever preferred_lft forever
7: enp0s20u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9c:eb:e8:0a:1a:8c brd ff:ff:ff:ff:ff:ff
inet 10.144.96.246/22 brd 10.144.99.255 scope global dynamic noprefixroute enp0s20u2
valid_lft 84916sec preferred_lft 84916sec
inet6 fe80::6d66:6e10:cf2:abce/64 scope link noprefixroute
valid_lft forever preferred_lft forever
~ ip route
default via 10.161.248.1 dev wlp2s0 proto dhcp metric 600
default via 10.144.96.1 dev enp0s20u2 proto dhcp metric 20100
10.144.96.0/22 dev enp0s20u2 proto kernel scope link src 10.144.96.246 metric 100
10.161.248.0/21 dev wlp2s0 proto kernel scope link src 10.161.253.58 metric 600
解决方案
作为对已接受答案的补充,我最终编写了小型 DNS 代理以使一切正常工作。所以这是完整的解决方案:
接口:
- wlp2s0 无线局域网,用于互联网
- enp0s20f0u1 以太网连接,用于内联网
脚步:
- 连接两个接口
- 删除 enp0s20f0u1 的默认路由:
sudo ip route del default via 10.144.96.1
- 添加 enp0s20f0u1 的路由:
sudo ip route add 10.0.0.0/8 via 10.144.96.1 dev enp0s20f0u1
- 安装域名解析协议
- 将名称服务器更改为 localhost
- 使用您自己的配置启动 dnsrp
sudo dnsrp -c conf.toml
答案1
首先,路由表的总体思想是指定如何到达所有可能的主机和网络。路由表会自动排列,以便最具体的条目排在前面,并且与数据包的目标地址匹配的第一个条目将用于该数据包。最不具体的路由始终是默认网关:它是一种“对于我未指定的其他所有内容,将其发送到那里”。
在您的情况下,您需要了解 Intranet 中正在使用哪些网段,并指定一个或多个路由条目,将发往这些网段的任何流量定向到 Intranet 端网关。
例如,我可能猜测您的所有 Intranet 网段可能都在 10.* 地址范围内。在这种情况下,我会指定这样的路线:
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.144.96.1 dev enp0s20u2
使用该ip
命令,等效语法为:
sudo ip route add 10.0.0.0/8 via 10.144.96.1 dev enp0s20u2
由于无线网段已经有自动生成的路由,因此 10.161.248.0/21 网段内的任何内容都将通过无线接口自动到达,包括具有最低度量的默认网关,因此这应该为您提供基本的互联网连接,同时新路由将通过有线接口将绑定到所有其他 10.* 网段的流量发送到 Intranet 网关。
如果您当前配置的 DNS 服务器位于 Intranet 端,并且还将解析 Internet 地址,那么一切都会顺利进行。但如果您需要将一台 DNS 服务器用于 Internet 地址,而另一台 DNS 服务器用于 Intranet,那么事情就会变得复杂。
首先,如果必须通过无线接口访问互联网侧DNS服务器,并且该服务器不在10.161.248.0/21无线网段内,则需要为其创建单独的路由条目。
其次,您将无法仅使用/etc/resolv.conf
.有时,我通过在仅缓存配置中安装本地 BIND 名称服务器并将互联网端 DNS 服务器指定为默认转发器,并为所有 Intranet DNS 编写指向 Intranet DNS 服务器的每个区域转发器配置来解决此类情况域。
答案2
基本上,您需要设置两条路线,如下所示:
请注意,我不知道要使用哪个网关,因此我使用您数据中的网关:
sudo route add -net 10.144.96.0 netmask 10.144.99.0 gw 10.144.248.1 dev enp0s20u2
sudo route add -net 10.161.0.0 netmask 10.161.0.0 gw 10.161.248.1 dev wlp2s0
太好了,所以我必须再次重新学习这个......
有ip路由
sudo ip route add to 10.144.96.0/21 via 10.144.248.1 dev enp0s20u2
sudo ip route add to 10.161.0.0/22 via 10.144.248.1 dev wlp2s0
对我来说,看起来不正确,可能会起作用......ip route
糟透了!