Linux主机共享网络给Windows系统上网
- 需求背景
- 解决思路
- 实施步骤一:让Windows主机有线连接到Linux主机
- 实施步骤二:Linux系统设置端口转发,共享网络
- 实施步骤三:Windows上设置网关为Linux系统
- 共享文件、共享鼠标键盘
需求背景
-
我的办公电脑是一台使用
Ubuntu Linux系统
的台式机。(Ubuntu 15.10) -
我带来了自己的
Windows系统
的笔记本电脑到公司里用,但是不想用Wifi上网(太慢)。 -
我的办公卡座下就只有一个网线插口,已经被办公电脑用了。
-
这台办公电脑只有一块网卡,用网线插在了卡座唯一的插口上,用来上网。
那么问题来了,怎么才能让这台笔记本电脑通过这台Linux主机上网呢?
解决思路
三步走:
-
Linux主机上加装一个USB有线网卡,让Windows主机通过网线连接到Linux主机。
-
Linux系统里对这个USB网卡包转发到原来上网的网卡上。
-
Windows系统把网关设置为Linux主机,就可以上网啦。
实施步骤一:让Windows主机有线连接到Linux主机
淘宝上搜索“USB有线网卡”,更准确点的是搜“AX88772C 网卡”。这是个一头是usb,一头是RJ45网口的小东东。AX88772C是这种网卡使用的芯片的型号。通常二三十块钱,我买的绿联的。
准备一条交叉线(网线,水晶头部分使用交叉方法压制),淘宝上可以买到,长度根据你两台电脑之间的距离自己选择。我买了2米的。
把USB网卡插到Linux主机的USB接口上,安装驱动:
-
首先要去找网卡驱动。有的买来的网卡就带了驱动光盘,也可以找找有没有Linux驱动。这种网卡的芯片都是AX88772C的,google一下就可以下载到Linux的驱动源码。
-
源码解压后是类似这样的文件夹:
AX88772C_772B_772A_760_772_178_LINUX_DRIVER_v4.17.0_Source
-
根据文件夹里README文件来编译就可以了,基本上就是
make && make install
-
如果编译碰到类型datetime的报警,就需要修改下makefile里的
EXTRA_CFLAGS
,给它加个no-error
选项,如这样:EXTRA_CFLAGS = -DEXPORT_SYMTAB -Wno-error=date-time
-
编译、安装完成后,还需要按照README里写的启动一下这个驱动模块:
modprobe asix
-
这时系统就会多一个网络接口出来,可能是eth1,也可以是一串不规则的字符串名字。(在最新的ubuntu 17.04中是带有mac地址的字符串)
-
给这个新的网络接口设置下IP,比如:
192.168.0.1 (子网掩码 255.255.255.0 网关留空)
,然后在其路由选项里,勾上仅将此链接用于相应的网络上的资源
以及忽略自动获取的路由
(如果这个选项可以勾就勾上)
实施步骤二:Linux系统设置端口转发,共享网络
切换到root账户,执行以下命令:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
注意:上面这行里的eth0
就是Linux机器上能上网的那个网络设备。
实施步骤三:Windows上设置网关为Linux系统
windows上用交叉线连上linux那个网卡后,系统会多出个连接,win7的话在弹出对话框里选择“办公网络”。
给它设置ip:192.168.0.20 (子网掩码 255.255.255.0 网关 192.168.0.1)
,注意网关就是Linux电脑的新网络借口的IP
把DNS设置为4.4.4.4
,或者你公司内部的DNS服务器,不然域名是解析不了的。
这时在Windows上ping 192.168.0.1
是可以通的。
然后在控制面板里,将这条新链接的防火墙关闭。
这时去Linux上ping 192.168.0.20
也是通的了。
共享文件、共享鼠标键盘
这时Linux和Windows其实是在一个小的子网里了,所以不仅能共享网络上网,共享文件也是水到渠成的事,装个samba
就可以了。
共享鼠标键盘就用synergy
就可以了。
samba
和synergy
的使用方法这里不做介绍。