Linux设置为路由器(简单版)

场景:笔记本电脑通过无线路由器上网了,不想给台式机安装无线网卡,也不想拉网线,又想让台式机上网,就决定让笔记本电脑把网络共享给台式机。其实技术上就是让笔记本电脑具有路由功能。

首先,用一根网线把笔记本的有线网卡和台式机的网卡连接起来。现在的网卡都有Auto-MDIX功能,无需crossover网线,普通网线即可。

以前NetworkManager不能支持多个网络连接,现在可以了。我们需要对有线网卡指定一个IP地址,这里是192.168.0.1/24,如图:

现在笔记本电脑就有两个网络连接启用了,无线和有线的eth1。但是只有无线是连接到因特网的,是我们的默认路由,不能把有线连接作为默认路由,所以需要对eth1进行一下设置,不要让其作为默认路由。如图,把“仅将此连接用于相对应的网络上的资源”勾上:

在笔记本电脑上用DNSmasq开启DHCP服务,需要把配置文件中的dhcp-range一行注释掉。台式机的网卡设置为自动获得IP地址,那么它将通过连接笔记本电脑的网线,从DNSmasq获得一个IP地址。

给笔记本增加一条iptables规则:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.2.2

这条的意思是源IP地址在192.168.0.0/24子网内的IP包,都将其源地址修改为其出口网卡的IP地址192.168.2.2,这是笔记本的无线网卡IP地址。

现在台式机还不能上网,再加一个步骤即可。要把笔记本电脑的IP层转发打开。把/etc/sysctl.conf中的net.ipv4.ip_forward=1的注释去掉,并执行sudo sysctl -p。现在台式机就可以通过笔记本电脑上网了。

关于本话题更深入的研究,见个复杂版的Linux设置为路由器