首先,需要具备的硬件条件是一台具有两个或两个以上网卡的Ubuntu设备,常见的比如一些软路由设备,常规主机一般只有主板上自带的一个网卡,笔记本一般有一个无线网卡以及一个有线网卡。如果当前设备网卡不够,可以购买USB网卡或者PCIe网卡来进行配置。我使用的是一个系统为Ubuntu14.04的六网卡设备。
在配置交换机前需要明确当前网络环境,最重要的就是需不需要拨号上网。举个例子,假设我们需要配置的Ubuntu路由器可以通过连到另一台路由器直接上网,那么就可以省去拨号这一步。我这边的环境需要通过VPN拨号上网,因此需要先安装相应的VPN软件包以及拨号器。
上一步提到如果有其他路由器可以直接上网,那么将ubuntu路由器连接到可以上网的路由器即可。若需要VPN拨号,以浙大VPN为例,它使用x协议,需要先安装两个包。
sudo apt install xd
sudo apt install ppp
安装完成后,下载相应的拨号器,可在网上搜索对应VPN使用的拨号器,我这边使用了98论坛中的一个Linux VPN拨号器。
sudo -connect -c //设置账号密码
sudo -connect //VPN拨号
sudo -connect -d //断开VPN
我连接到了"eth0"网卡,设置好静态IP、子网掩码、网关、DNS服务器后(下一步会说),通过VPN拨号器上网,因此我此时连接外网的网卡(作为WAN口)为"eht0"。(通过ifconfig命令可查看当前设备所有网卡,有些名字不一定是ethx这种格式的)
刚刚连接的WAN口以及内网的LAN口需要配置为静态IP,此处我将eth5设置为内网的网卡。
sudo vim /etc/network/interfaces
在该文件中添加
auto eth0
iface eth0 inet static
address 10.14.113.234
netmask 255.255.255.0
gateway 10.14.113.1
auto eth5
iface eth5 inet static
address 192.168.20.1
netmask 255.255.255.0
gateway 192.168.20.1
配置好静态IP、子网掩码、网关地址后,需要设置DNS服务器地址(普通网络的DNS服务器可从网上搜索,例如8.8.8.8等)。网上很多设置DNS服务器的方法是在/etc/resolv.conf文件中添加DNS服务器地址,但是直接修改这个文件虽然当时有用,但是重启后又会被覆盖掉,搜索了一些资料后发现需要修改/etc/resolvconf/resolv.conf.d/base这个文件,当时我找半天发现根本没有resolv.conf.d这个文件夹,更别说base这个文件了,这是因为没有安装resolvconf软件包,如果安装完以后还没有这个文件以及文件夹,直接手动创建即可
sudo apt install resolvconf
sudo vim /etc/resolvconf/resolv.conf.d/base
在这个文件中添加DNS服务器(可添加多个),不同区域用的DNS服务器不同,可以通过DNS选优软件选择最佳DNS服务器,我这边用的DNS服务器是固定的。DNS服务器的功能就是解析域名,如将www.baidu.com解析为IP地址,如果后面发现可以通过ip地址访问外网却不能通过域名访问外网,说明DNS服务器设置有问题。
nameserver 10.10.0.21
保存base文件后执行以下语句
resolvconf -u
重启网络使修改生效
sudo /etc/init.d/networking restart
sudo vim /etc/sysctl.conf
打开文件后将net.ipv4.ip_forward=1前面的注释去掉(vim打开文件后可输入/net.ipv4.ip_forward查找该语句位置)。然后返回terminal,输入以下命令使修改生效
sudo sysctl -p
sudo route add -net 192.168.20.0 netmask 255.255.255.0 dev eth5
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth5 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth5 -j ACCEPT
第一句话是给eth5添加192.168.20.x网段的路由表,下面两句话是启用eth0和ppp的nat功能,因为网上很多教程没有,所以不需要添加ppp的nat功能,当使用连接时就需要添加,没添加的话eth5下面带的主机就没法上网。最后两句话是将eth0与eth5关联起来。
由于系统重启后上面很多指令可能会失效,因此可以在指令最上方加上VPN连接指令sudo -connect,然后写成一个.sh脚本文件,并将其设置为开机启动即可。
由于上面我没有在ubuntu路由器中添加DHCP服务器,所以它没办法给下面的主机分配IP地址,需要下面的主机设置静态IP地址,设置为192.168.20.X即可,另外该主机也需要添加DNS服务器,操作都跟第四步一样。配置完重启网络或系统后即可上网。
可能有人会问那eth5不是只有一个网口吗,怎么给多个主机同时上网呢?可以使用交换机,将eth5与需要上网的主机连接到同交换机上即可供多个主机上网。独立网卡都只能在各自的网段运作吗?不是的,可以通过bridge功能将其配置在同一网段,最终达到路由器效果。详情可参考: 如何将ubuntu配置为路由器(二)