0%

计算机网络探究一之利用双网卡主机共享上网

综述

大家好,这次我们需要实现的是实现双网卡主机共享上网,就是一台主机通过连接另一台可以访问外网的双网卡主机来正常上网。所以我们需要两台机器来进行测试,在这里我们用的是两台Ubuntu 14.04,其中一台是单网卡,一台是双网卡。废话不多说,行动起来吧。

配置系统

博主使用了Vmware来安装了两台Ubuntu主机,一台当路由机,名称是Ubuntu Route,另一台是客户机,名称是Ubuntu Desktop,具体的网络配置如下: Ubuntu Route: 一个网卡eth0通过NAT方式来与外部主机共享上网,这个网卡也就是VMnet8网卡,网段是192.168.231.0 20151007164043 另一个网卡eth1连接了一个自定义的仅主机模式的网卡VMnet2,网段是192.168.122.0 20151007164114 网络适配器设置如下,eth0开启了DHCP,ech1没有开启DHCP 20151007164343 Ubuntu Desktop: 一个网卡eth0连接刚才那个自定义的仅主机模式的网卡VMnet2,网段是192.168.122.0 20151007164821 好了,以上就是基本硬件的配置

设置IP

接下来我们设置一下Ubuntu Route的IP地址,修改 /etc/network/interfaces

1
2
3
4
5
6
7
8
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.122.4
netmask 255.255.255.0

在这里,eth0因为我们在VMware里面设置了DHCP,所以这里我们设置dhcp即可,eth1需要手动配置一下,我们分配了 192.168.122.4 这个IP地址,当然你可以随意指定,子网掩码如上,不需要写网关,因为它本身作为一个路由。 可以通过执行如下命令来使之生效

1
sudo /etc/init.d/networking restart

如果上述方法不行,则可以尝试使用关闭网卡和开启网卡的命令。

1
2
sudo ifup eth0
sudo ifdown eth0

eth1的开启和关闭同上

开启路由转发

修改 /etc/sysctl.conf 文件,将

1
net.ipv4.ip_forward=1

这一行取消注释,代表开启了路由转发功能。 也可以通过执行

1
echo 1 > /proc/sys/net/ipv4/ip_forward

命令来实现

设置iptables规则

iptables是非常重要的一个环节,如果大家不熟悉,可以去搜相关资料了解一下。 执行如下命令,来设置一下iptables规则,可以直接在命令行逐条执行,也可以写成一个脚本来执行。

1
2
3
4
5
6
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

其中最后一条是最重要的,代表将数据包通过eth0网卡来转发,也是IP伪装的一个常用方法,有了这条指令,从eth1网卡流经的一些数据包可以通过eth0来转发,这样就相当于连通了两个网卡,这样与eth1网卡连接的主机便可以上网了。

客户主机设置

因为客户机的eth0连接了VMnet2网卡,而VMnet2网卡又与路由主机的eth1连接,我们只需要简单设置一下IP地址就好了。 修改 /etc/network/interfaces

1
2
3
4
5
6
auto eth0
iface eth0 inet static
address 192.168.122.5
netmask 255.255.255.0
gateway 192.168.122.4
dns-nameservers 119.29.29.29

这里很重要的一个设置就是网关,设置成路由主机的IP地址。 设置完了同样重启一下网卡使其生效。 还可以选择性设置下DNS服务器。 至此,所有配置都完成了,测试一下吧。

测试

我们在客户机里打开浏览器,输入随意一个网页测试一下。 20151007172000 嗯,客户机可以正常上网啦,一切都是那么轻松加愉快! 如有问题,欢迎留言交流~