ubuntu 做网关 windouws 上网 教程

7 篇文章 0 订阅
3 篇文章 0 订阅

本教程用来实现利用一个PC机(Ubuntu14.04系统)实现路由器功能。

如果你有一台拥有两块网卡的电脑的话,那么你可以通过一些简单的配置将这台电脑变成一个具有强大潜能的路由器。你可以在这个路由器上建立简单的NAT(Network Address Translation)功能,转发数据或者实现代理服务等等许多其他的功能。这里将介绍通过一些简单的配置步骤将一个Ubuntu系统的PC机变成一台路由器。

首先介绍一下需要准备的一些东西:

1、一台Ubuntu系统的PC机(笔记本,台式机均可)

2、两个网卡(我用了一USB转RJ45网线接口+笔记本内置网卡)

3、网络连接(做这些当然还是为了能够通过电脑上网)

4、iptables的一些知识,这个可以查看我转的一篇介绍iptables的博文

再次说明,我们需要电脑装有两块网卡,其中一块网卡连接在Internet上,我这里连接Internet的网卡是eth0;另外一块网卡连接即将搭建的内网,我这里连接内网的网卡是eth1.希望呈现的效果是:HostA(192.168.6.3)<==>eth1<==>Ubuntu Gateway<==>eth0<==>Internet,下图是整个系统搭建的框架:


从左到右的一些说明:

  • router:Host A通过这个路由器与Internet相连
  • eth0:连接到Internet的网络适配器
  • Host A:Ubuntu系统的PC机
  • eth1:连接到内网的网络适配器
  • switch:因为不希望直接用网线连接Host A和Host B,中间通过这个交换机连接
  • eth0:Host B的连接到网络的网络适配器(Host B只需要一块网卡就可以了)
接下来是一些具体的配置步骤:

首先是给各个网络端口配置静态IP,因为我们这里并没有运行dhcpd,所以所有的网络端口都需要手动配置一个静态IP,对于端口IP的配置,既可以通过命令行配置,也可以通过修改网络配置文件来配置,还可以通过桌面版本的网络设置里进行配置。通过命令行配置的话,下次再重新启动电脑或者重启网络服务之后配置也就随之失效了,而且在我的测试里,过了一段时间之后,网络又恢复了默认配置。接下来具体介绍下通过修改配置文件和桌面版本的网络设置里配置的方法。

(1)通过桌面版本的网络设置进行网络的配置

系统设置(System Settings)=>网络(Network)=>选择网络端口=>选项(Options)


我这里给eth1配置的IP为192.168.6.1。


对于eth0,执行同样的操作就可以了,从上面的系统结构图可以看到我们的eth0通过一个路由器连接到Internet,这个路由器的网段为192.168.1.1/24,所以我这里给eth0配置的IP地址为192.168.1.155。


上面都是针对Host A的两块网卡所配置的静态IP,对于Host B同样需要配置静态IP,这里我用的Host B是windows系统,配置的静态IP如下:


这里的默认网关和DNS服务器是需要写上的,同时为了网速的考虑,这里的DNS服务器最好和前面的路由器上的保持一致,这个可以通过任意一台通过该路由器接入Internet的设备上查询,这里就不赘述了。

(2)如果你想要通过更改网络配置文件来配置网络的话,那么参见下面的步骤

1、打开一个终端(Ctrl+Alt+t)

2、更改相应的配置文件:

sudo vim /etc/network/interfaces

3、修改这个配置文件如下:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.155
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 192.168.6.1
netmask 255.255.255.0
gateway 192.168.6.1

注意上面的修改操作需要有root权限才能保存,同时修改完之后需要重启网络服务或者直接重启电脑,上面的设置就会生效了。重启网络的命令为:

sudo /etc/init.d/networking restart

注意这里你可能不能通过interfaces这个文件来修改配置网络,这个可能和你安装了network-manager有关,删除这个之后就可以通过更改interfaces来配置网络了。

对于Host B,如果你也是ubuntu系统并且想通过配置文件来配置网络的话,可以按照上面的步骤来,但是对于DNS服务器的配置在/etc/resolv.conf:

nameserver 210.45.240.99#这里是我的DNS服务器地址,你可以配置成你能够访问的,比如说8.8.8.8

上面两部分介绍了配置静态IP地址的过程,接下来需要让你的PC机能够转发IP数据包,Linux系统本身就有IP数据包转发的功能,但是默认情况下是关闭的,你需要通过修改配置文件来启动这个功能,修改/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的注释去掉。


再使用下面的命令来使上面的修改生效(当然你也可以重启电脑):

sudo sysctl -p

上网看很多教程在这里还加了一步:

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

在你修改sysctl.conf并使之生效后会发现ip_forward这个文件中的0自动变成了1,不需要再通过这一步来改变。同时如果你没有更改sysctl.conf的话,那么你也没办法用这个命令来修改ip_forward里的内容,你会发现怎么改ip_forward里的内容都是0.

搞定IP数据包转发的问题,接下来就是添加路由表让eth1和eth0能够通信了,这个通过iptables来搞定。在终端中输入以下命令:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

注意这里是针对我的情况来写的,你要注意eth0和eth1所连接的内网和外网的关系!关于这些命令的意思,可以参见iptables的一些说明,我也有转一篇介绍iptables的博文:iptables简单介绍。接下来保存这些规则:

iptables-save > /etc/iptables.rules

这里可能出现:
-bash: /etc/iptables.rules: Permission denied
的错误提示
解决方法是:


sudo bash -c "iptables-save > /etc/iptables.rules"
原因是:

sudo runs iptables-save as root, then you're piping the result of the sudo command as your regular user to /etc/iptables.rules. However, you don't have permission to create a file in /etc. This is the only annoying thing about sudo.

到这里差不多也就完成了,接下来就是连接Host A和Host B测试一下了。


另外如果重启后iptables失效,可以在/etc/rc.local中写入:

iptables-restore < /etc/iptables.rules

将Host A和Host B用网线连接起来,Host B的配置上面已经讲过,下面是我在Host B上打开百度网页的测试:



可以看到Host B通过Host A成功的接入了Internet。

我们这里还都是通过静态配置IP地址来完成整个实验的,如果需要自动分配IP的话,需要在Host A上搭建一个dhcp服务器,我这就没有去实验了,有兴趣的可以尝试下。




资源:

    PC A: Ubuntu 12.04 LTS,两块网卡,分别为eth0和eth1,使用eth0连接互联网

    PC B: Windows 7, 一块网卡,为eth0

 

目标:

    使得B通过A连接互联网(IPv4),即实现A为路由器的功能

 

步骤:

 

PC A:

    (0)假设eth0已经配置好,PC可以通过eth0连接互联网,配置eth1为,如/etc/network/interface所示

 

                        auto lo

                        iface lo inet loopback

                       

                        auto eth0

                        iface eth0 inet static

                        address 172.16.10.65

                        gateway 172.16.10.254

                        netmask 255.255.0.0

                       

                        auto eth1

                        iface eth1 inet static

                        address 192.168.6.1

                        netmask 255.255.255.0

                        network 192.168.6.0

                        broadcast 192.168.6.255

   

     当然,我是删除了network-manager,network-manager-gnome的才可以通过配置interface这个文件来设置网络的

     你也可以通过network-manager来配置。DNS服务器可以通过/etc/resolv.conf来配置:

                       

                        nameserver 168.95.1.1 #这是我的DNS服务器,你可以配置成你可以访问的,如8.8.8.8

 

    重启你的网络服务或者重启PC A,以上设置就可以生效。

                 

    (1)Linux系统自身就有IPv4包转发的功能,在/etc/sysctl.conf进行配置,

    打开IPv4转发功能:

                        net.ipv4.ip_forward=1

 

    输入以下命令使得上面的设置生效(或者重启电脑):

 

                        sudo sysctl -p

 

    (2)通过iptable实现IPv4包转发

 

                        sudo iptables -t nat -A POSTROUTING -s 192.168.6.0/24 -o eth0 -j MASQUERADE

 

    可以通过iptables-save将iptables rule都保存到文件中,在通过iptables-restore读取rule到iptables中,

    可以自己写一个脚本来实现iptables自动的载入rule,或者找到iptables的配置文件来修改

 

PC B

    (0)将PC B的eth0与PC A的eth1用网线直接连接,配置PC B的eth0为:

               

                        IP ADDRESS : 192.168.6.101

                        SUBNET MASK: 255.255.255.0

                        GATE WAY   : 192.168.1.1i

                        DNS Server : 168.95.1.1

 

    这样PC B就可以通过PC A连接互联网了

 

 

增强配置:

    路由器都可以自动给PC分配IP,而不需要手动配置IP,这是通过DHCP来实现的。如果也要实现相同的功能,那

    就需要在PC A上搭建一个DHCP服务器。

 

    (0)安装DHCP服务器

                        sudo apt-get install isc-dhcp-common isc-dhcp-server

    (1)配置DHCP

        (i)修改/etc/default/isc-dhcp-server

 

                INTERFACES="eth1"

 

        (ii)修改/etc/dhcp/dhcpd.conf

 

                subnet 192.168.6.0 netmask 255.255.255.0 {

                  range 192.168.6.100 192.168.6.200;

                  option routers 192.168.6.1;

                  option broadcast-address 192.168.6.255;

                  option domain-name-servers 168.95.1.1;

                  default-lease-time 600;

                  max-lease-time 7200;

                }

 

    (2)PC B可以自动获取IP了,如果在PC A的eth1上接一个switch,接在switch上所有的PC都可以获取IP了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值