首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个网卡用于内部网,另一个用于互联网?

问如何将一个网卡用于内部网,另一个用于互联网?
EN

Unix & Linux用户
提问于 2017-12-14 08:11:22
回答 2查看 2K关注 0票数 4

在办公室里,我们有用于互联网接入的wlan和用于访问intranet的以太网电缆。我想配置我的笔记本电脑,以便我可以同时使用这两个,但到目前为止,我还不能做到这一点。我找到了这的答案,但我没有足够的网络知识来应用于我的情况。

如果我连接到这两个网络,我可以访问internet,但不需要显式指定接口就不能访问intranet。

不管用:

代码语言:javascript
复制
ping 10.158.51.11

作品:

代码语言:javascript
复制
ping -I enp0s20u2 10.158.51.11

我目前的配置:

代码语言:javascript
复制
~ 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以太网,用于内部网

步骤:

  1. 连接两个接口
  2. 删除enp0s20f0u1的默认路由:sudo ip route del default via 10.144.96.1
  3. 为enp0s20f0u1:sudo ip route add 10.0.0.0/8 via 10.144.96.1 dev enp0s20f0u1添加路由
  4. 安装强的松松
  5. 将名称服务器更改为本地主机
  6. 使用您自己的配置sudo dnsrp -c conf.toml启动dnsrp
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-12-14 10:06:00

首先,路由表的一般思想是指定如何到达所有可能的主机和网络。路由表自动排列,以便最具体的条目优先,与数据包的目的地地址匹配的第一个条目将用于该数据包。最不具体的路由总是默认的网关:它是一种“对于其他我没有指定的东西,发送到那里”。

在您的情况下,您需要知道在您的intranet中使用的是哪些网段,并指定一个或多个路由条目,将发送到这些网段的任何流量发送到intranet端网关。

例如,我可能猜到您的所有intranet段可能都在10.*地址范围内。在这种情况下,我会指定这样的路线:

代码语言:javascript
复制
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.144.96.1 dev enp0s20u2

使用ip命令,等效的语法是:

代码语言:javascript
复制
sudo ip route add 10.0.0.0/8 via 10.144.96.1 dev enp0s20u2

因为无线段已经有了自动生成的路由,10.161.248.0/21段中的任何内容都将通过无线接口自动到达,包括最低度量的默认网关,因此这将为您提供基本的Internet连接,而新路由将通过有线接口将绑定到所有其他10.*段的流量发送到intranet网关。

如果您当前配置的DNS服务器位于intranet端,并且还将解析internet地址,那么所有这些都应该进行得很好。但是,如果您需要使用一个DNS服务器作为互联网地址,另一个用于内部网,那么它就变得复杂了。

首先,如果必须通过无线接口访问internet端DNS服务器,并且它不在10.161.248.0/21无线段中,则需要为其创建一个单独的路由条目。

其次,您将无法使用/etc/resolv.conf配置诸如“从此DNS服务器获取这些域的信息,以及从此其他DNS服务器获取所有其他域的信息”这样的配置。有时,我通过在缓存专用配置中安装本地绑定名称服务器并将internet端DNS服务器指定为默认转发器来解决这种情况,并为所有intranet DNS域编写指向intranet DNS服务器的每个区域转发器配置。

票数 4
EN

Unix & Linux用户

发布于 2017-12-14 09:01:25

基本上,您需要设置两条路由,如下所示:

请注意,我不知道要使用哪个网关,所以我使用数据中的那些网关:

代码语言:javascript
复制
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路由

代码语言:javascript
复制
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糟透了!

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/410808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档