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 嗯,客户机可以正常上网啦,一切都是那么轻松加愉快! 如有问题,欢迎留言交流~