PC实现路由器的基本功能

时间:2021-11-14 02:19:31

一、实验目标

PC实现路由器的基本功能

图1 实验目标

二、实验过程

1、实验条件

(1)、电脑两台:一台装有Linux系统(ubuntu),双网卡;一台windows 7操作系统,单网卡
(2)、路由器一个:支持DHCP、pppoe以及静态方式上网
(3)、手机一台,装有IxChariot Endpoint,wifi无线连接公司网络,作为PC2使用。
设备拓扑结构:

PC实现路由器的基本功能

图2 设备拓扑结构

2、pc实现pppoe服务,供下联设备拨号获取地址

(1)、安装PPPoe服务器软件

  sudo apt-get install pppoe
  //命令pppoe-server -h 查看软件版本

(2)、配置pppoe服务器
在/etc/ppp目录下编辑文件(options、chap-secrets、pppoe-server-options):

  cd /etc/ppp
  sudo vi options
找到#ms-dns去掉改行注释,改为实际可用的DNS服务器地址,如114.114.114.114或者8.8.8.8等通用DNS;

PC实现路由器的基本功能

  sudo vi chap-secrets

增加如下代码:

zhangyahai  * 123456 * 

PC实现路由器的基本功能

  //表示用户名zhangyahai,服务器为任意*,密码为123456,ip为任意的*
  sudo pppoe-server-options
  //此文件不存在就创建该文件,增加以下内容
  require-chap
  logfile /var/log/pppd.log

PC实现路由器的基本功能

(3)、设置IP策略
  开启IP转发功能
  pppoe协议接入控制的主要方式就是通过对IP数据包的封装在转发,所以需要配置PPPoE服务器必须要开启IP转发功能。
  打开/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1所在行,取消该行的注释,随后运行sudo sysctl –p即可打开IP转发功能。
  sudo vi /etc/sysctl.conf
PC实现路由器的基本功能

(4)、配置iptables的IP策略
该步骤需要在超级用户权限下进行:
进入root:

  sudo -s -H
运行:
  iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -o enp3s0 -j MASQUERADE
//其中10.10.10.0/24是自己想分配的网络号,根据自己的实际需要填写即可;-o enp3s0表示的是服务器连接外网的网卡名字。

(5)、运行PPPoE服务器

  sudo pppoe-server -I enp5s0 -L 10.10.10.49 -R 10.10.10.50 -N 50`

  其中:-I参数为提供服务的网络端口名称,可以使用ifconfig命令查看当前工作的端口;
  -L参数为一个PPP连接中,PPPoE服务器的IP地址,即当前ubuntu服务器地址;
  -R参数为当有客户连接到服务器时,从哪个地址开始分配;
  -N参数为最多可以有多少个客户同时连接到当前服务器上。
  注:每次重启后,该服务会终断,需要从新运行此命令,可以将此命令作为开机脚本。
(6)进入路由器,进行pppoe拨号上网,结果如下图所示:

PC实现路由器的基本功能

3、pc提供DHCP服务,供下联设备获取动态地址

(1)、安装udhcpd

  sudo apt-get install udhcpd

(2)、为server的两个网卡配置静态ip地址

PC实现路由器的基本功能


PC实现路由器的基本功能PC实现路由器的基本功能

(3)、加一条默认路由(网关),才能上外网,,查看此时路由数据:

 sudo ip route add default via 172.17.52.1
 ip route

PC实现路由器的基本功能

(4)、配置地址池、DHCP服务的接口、下级使用的DNS、租约时间等:

  vi  /etc/udhcpd.conf

  作如下修改:

PC实现路由器的基本功能

PC实现路由器的基本功能

(5)开启ipv4 ipv6的转发功能:
  这里使用 脚本运行sudo echo 1 > /proc/sys/net/ipv4/conf/all/forwarding:
  或者,使用命令sudo vi /etc/sysctl.conf到指定文件中去修改
PC实现路由器的基本功能

(6)配置NAT:

    iptables -F -t nat;//清空NAT这个表中的所有链
sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o enp3s0 -j MASQUERADE
  // 处理nat表,在链尾追加规则, POSTROUTING链(在包就要离开防火墙之前改变其源地址),将源地址为192.168.10.0/24,目的地址为WAN口的所有IP包发到MASQUERAE(即将这些地址换成 MASQUERADE动态伪装,它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址)。MASQUERADE是被专门设计用于那些动态获取IP地址的连接比如,拨号上网、DHCP连接等。如果有固定的IP地址,用SNAT target。

(7)、启动DHCP服务:

  sudo udhcpd –I 192.168.10.1 &

    然后查看启动是否成功

  sudo netstat –uap

    注意启动DHCP服务时,使用root权限,不然有可能启动不起来。

PC实现路由器的基本功能

  查看此时路由器web,此时路由器WAN口状态,IP为192.168.10.98,在分配的地址池范围内,终断设备成功动态获取上联设备的分配的地址。
PC实现路由器的基本功能

4、PC1能ping通PC2

用手机代替连接在公司网络上的PC2:
  (1)、手机连接公司网络的无线网
  (2)、打开IxChariot Endpoint,获取手机端的ip地址:172.18.42.110,显然此时手机的地址由公司网络分配。
  在PC1上ping PC2,结果如下:

PC实现路由器的基本功能

5、PC1能访问Internet

  在PC1*问百度网站,或者在命令行下ping百度主页,结果如下:

PC实现路由器的基本功能

6、抓包分析各种协议的过程

  ping服务器外网入口ip,抓到的包如下所示:

PC实现路由器的基本功能

  在PC1和PC2之间打流,抓到的包如下所示:
PC实现路由器的基本功能

7、PC1和PC2之间打流

  PC1:本地计算机,ip—>172.16.10.164
  PC2:手机,连接外网路由器,ip—>172.18.42.110

PC实现路由器的基本功能

8、PC2访问route上的web

  从逻辑上来说,是属于从外网访问内网,PC可以ping通服务器,但是从服务器到route上,需要用到地址转换NAT。
  (1)、开启路由器的远程管理功能,开启此功能相当于在路由器端建立了一条iptables规则。
  (2)、在服务器新增一条规则

sudo iptables -t nat -A PREROUTING -p tcp -d 172.17.52.164 -m multiport --dport 80,8080 -j DNAT --to 192.168.10.98:8181 

  192.168.10.98是路由器的wan口ip地址,8181是开启路由器的远程管理的端口;172.17.52.164是服务器外网入口ip地址。
  PC2之所以能访问route上的web服务器,是因为在route上,当打开路由器的远程控制时,路由器自动也创建了一条iptables规则,将服务器发送过来的数据转到web服务器。