作者starlin2 (找房子找房子找房子~)
看板Linux
标题[问题] 如何设定同时连内网(eth)跟外网(wifi)
时间Thu Jan 17 15:29:52 2019
目前小的有台server环境如下:
unbuntu 18.04
有Wifi跟网路线连接
然後想做到以下功能,
一,内网走网路线,外网走wifi。
二,可以用其他内网的电脑透过ssh或是http连到这台server。
三,这台server连出去都透过外网去连。
现在情况是:
连接内网时需要设定proxy才能够让其他电脑连线或是连出去,
proxy设定方式是在/etc/environment内加入
export all_proxy="socks://10.110.11.12:8080/"
export http_proxy="
http://10.110.11.12:8080/"
export https_proxy="
http://10.110.11.12:8080/"
目前我同时连接内外网的时後用route -n输出如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp2s0
0.0.0.0 10.110.214.254 0.0.0.0 UG 20100 0 0 enx000
10.110.214.0 0.0.0.0 255.255.255.0 U 100 0 0 enx000
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enx000
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
此时会无法上网也无法连线到这台server
用sudo route delete default gw 192.168.0.1之後
可以连线也能让其他电脑透过内网连入,
但目前这台电脑的对外连线就都是透过内网的proxy无法透过外网。
想问一下我要如何设定才能做到我要功能呢?
PS:我有试过sudo route delete default gw 10.110.214.254
不过当我server有设定proxy的时後外网是完全不能用的,
就算我只有连wifi也是一样。
最後感谢看我问题的人,更感谢回答我问题的人,谢谢。
--
寻找理想中的房子~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.242.50.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1547710201.A.6AF.html
1F:推 chang0206: 只有连wifi 都不能通 那你所谓的「外网」就不通啊 01/17 15:53
2F:→ chang0206: 你要去看一下 iptables/ufw 的相关文件 01/17 15:54
3F:推 pizzahut: 你的路由表上面有两个预设gateway当然会有问题.. 01/18 13:29
4F:→ pizzahut: metric值小的时候会被优先使用.. 01/18 13:30
5F:→ pizzahut: 所以你删掉192.168.0.1会通是正常的 01/18 13:30
6F:推 pizzahut: 如果你要让其他电脑透过内网gateway连入请另外加静态路 01/18 13:32
7F:→ pizzahut: 由 01/18 13:32
8F:→ pizzahut: PS. 应该说,metric值比较小的设定会先被使用 01/18 13:34
9F:→ starlin2: 我知道metric值小优先~ 01/18 16:15
10F:→ starlin2: 想问一下,在有设定proxy的情况之外要怎麽让外网可以通? 01/18 16:16
11F:→ starlin2: 目前是我有设proxy的时後外网就完全不能通。 01/18 16:17
12F:推 pizzahut: 可是都有了外网基本上应该不会再用到proxy..有点多此一 01/18 16:21
13F:→ pizzahut: 举 01/18 16:21
14F:推 pizzahut: 理论上是不太可能指到proxy就不会通.. 可能是你指到的 01/18 16:26
15F:→ pizzahut: 有问题 01/18 16:26
16F:→ pizzahut: 又或者是proxy server上面的设定要设信任来源 01/18 16:27
17F:→ pizzahut: 不在来源内的网段就算有指到也不会给你用.. 01/18 16:27
18F:→ pizzahut: 因为你说只用内网连proxy是可以连外,那原因会偏向後者 01/18 16:29
19F:→ starlin2: 不知道要怎麽设定内网走proxy,但外网直接走192.168.x.x 01/18 17:28
20F:→ starlin2: 不要经过proxy? 01/18 17:28
21F:推 kdjf: 要不要走proxy 是你的末端clients像是浏览器自己要觉得的,O 01/18 17:58
22F:→ kdjf: S管不着 01/18 17:58
23F:推 yvb: 假设你所谓内网是 10.x.x.x , 透过 10.110.214.254 连接, 01/18 18:31
24F:→ yvb: 那就 route delete default gw 10.110.214.254 01/18 18:31
25F:推 yvb: route add -net 10.0.0.0/8 gw 10.110.214.254 01/18 18:33
26F:→ rexsony: 网卡的default route = off 01/18 22:09
27F:→ rexsony: 类似的环境route -n 你参考看看 01/18 22:10
30F:→ rexsony: eth1的网卡设定我已经把default route关掉了 01/18 22:14
31F:→ rexsony: 主要上网透过eth0 (ppp0)来出去. 所以我eth0的default 01/18 22:14
32F:→ rexsony: route有打开,这样我的主机可以上网.也可以让别台电脑 01/18 22:15
33F:→ rexsony: 连Wi-Fi进到FTP抓档案. 01/18 22:15
34F:→ rexsony: subnet我借了一位,所以大家不会互相冲突 01/18 22:17
35F:→ rexsony: 你可以借位之後在给设定路由表就好 01/18 22:17
36F:推 chang0206: 有没有设定proxy跟「外网」会不会通没有关系 01/19 09:30
37F:→ chang0206: ㄟ,这样讲好像也不太对,应该说proxy跟路由没关系 01/19 09:32
38F:推 rickieyang: 透过 ppp0 出去,那网卡有没有设定 gw, 甚至没有设定 01/19 22:48
39F:→ rickieyang: ip 都可以吧. 01/19 22:48
40F:→ starlin2: 先笔记下来,再研究看看,不过如果proxy跟路由没关系, 01/21 15:17
41F:→ starlin2: 那为何我有设proxy时就算不接内网的网路线, 01/21 15:18
42F:→ starlin2: 外网(wifi)一样没办法上网耶?然後把proxy设定拿掉就可. 01/21 15:18
43F:推 kdjf: 你设定了proxy後所有的clients包含浏览器都会用proxy跑所有 01/22 08:59
44F:→ kdjf: 的连线,可是你的proxy server要嘛不受理(有插内网线)要嘛不 01/22 08:59
45F:→ kdjf: 存在(没插线)自然不通 01/22 08:59
46F:→ pizzahut: 所以我上面的回答就说了可能是你连到的proxy server不给 01/22 13:33
47F:→ pizzahut: 你连啊..要proxy那边加设定才可以 01/22 13:33
48F:→ pizzahut: 你把网路线拔掉表示没有内网路由..表示预设只有外网路由 01/22 13:34
49F:→ pizzahut: 另外proxy server如果只是设定上去直接用那基本上是用 01/22 13:35
50F:→ pizzahut: 预设路由..除非你的路由表里面有另外加设定像r大那样 01/22 13:36
感谢各位的回覆,我更新一下我目前做的实验,
一开始内外网都接的route设定如下:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp2s0
0.0.0.0 10.110.214.254 0.0.0.0 UG 20100 0 0 enx000
10.110.214.0 0.0.0.0 255.255.255.0 U 100 0 0 enx000
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enx000
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
此时将firefox设为No Proxy,可以正常透过外网连线,
但用其他电脑无法以ssh透过内网连到该主机。
後来我把外网的Metric设的比较後面,设定如下:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.110.214.254 0.0.0.0 UG 20100 0 0 enx000
0.0.0.0 192.168.0.1 0.0.0.0 UG 20200 0 0 wlp2s0
10.110.214.0 0.0.0.0 255.255.255.0 U 100 0 0 enx000
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp2s0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
此时可以用ssh透过内网连到该主机。
设定Interface走外网ping google可以pin到。
ping www.google.com fail
ping www.google.com -I wlp2s0 ok
但是如果用firefox一样设为No Proxy确没办法连线,因为firefox是走default route,
也就是10.110.x.x的这个内网。
不接内网的网路线时设定如下:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 20200 0 0 wlp2s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp2s0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
此时外网连线都正常。
所以现在我有两个问题,
1.我要怎麽设定firefox让他走外网,像pin + -I wlp2s0这样,
firefox里面的设定只能设定proxy,也有试过chrome,也只能设proxy,
而且按下去他就直接跳出系统的proxy设定了。
2.如果我照原来的设定,要如何让外部连到这台主机时让他跑内网的那一条路?
目前应该是我连过去时他是看default route,也就是192.168.x.x(外网),
所以无法用ssh连到。
不知道linux内有没有什麽地方是设定外部连线进来时是走那一个gateway的设定吗?
※ 编辑: starlin2 (59.124.231.69), 01/23/2019 17:35:19
51F:推 yvb: 请回去看我前面那三行推文. 01/23 22:54
感谢yvb大大,加入yvb大大的cmd後设定如下:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp2s0
10.0.0.0 10.110.214.254 255.0.0.0 UG 1000 0 0 enx000
10.110.214.0 0.0.0.0 255.255.255.0 U 100 0 0 enx000
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enx000
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
目前用firefox连外设为no proxy後可以正常透过外网连线,
也可以让其他机器透过内网连进来了。
最後再次感谢各位的协助,让我学到很多网路设定方面的知识,谢谢大家。
※ 编辑: starlin2 (210.242.50.96), 01/24/2019 13:44:22
52F:推 chang0206: 会通了,但你知道为什麽了吗? 01/24 16:52
53F:→ starlin2: 是因为0.0.0.0是预设所有连入的IP都走这个gateway, 01/24 18:50
54F:→ starlin2: 然後如果连入的IP是10.x.x.x的话就会走10.110.214.254 01/24 18:51
55F:→ starlin2: 这个gateway,这样理解正确吗? 01/24 18:52
56F:推 silverarrow: 路过看完所有的推文都觉得学到很多! 01/29 14:23
57F:推 yvb: 不是连入的IP走哪个gateway, 而是送出封包的目标IP. 01/30 22:03
58F:推 niverse: 笔记 02/26 09:45