2. 树莓派:通过树莓派的RJ45上网

背景:树莓派外接USB无线网卡,待上网设备通过网线和树莓派的RJ45口相连。

思路:

1. 首先给raspberry的eth设置一个静态ip地址。

2. 修改IP转发规则,允许ip数据的转发。(ip_forward的设置)

3. 路由设置,配置iptables,进行两个网卡的桥接。

4. 开启raspberry的DHCP服务,在eth口上开启。

5. 开启DNS服务。

详细过程:

1. 给树莓派的有线网卡eth分配静态地址。

暂时分配:sudo ifconfig eth0 192.168.173.1 255.255.255.0 up

永久分配

—配置文件 /etc/network/interfaces


interfaces配置文件

这是最常用的方法,但是在树莓派的原生系统下一般会建议,将静态IP设置在 /etc/dhcpcd.conf文件下。

并且在我的调试过程中,在interfaces文件下设置ip会导致不能识别USB网卡,很奇怪,所以还是建议在/etc/dhcpcd.conf文件修改。

—配置文件 /etc/dhcpcd.conf

在文件末尾添加


dhcpcd.conf的静态ip配置

在配置静态ip的同时,一般也会配置routers和domain-name-servers,但是我配置了这两个会导致usb网卡无法上网。所以没有在此配置文件下对这两个参数进行配置。


2. 启动IP转发

有多种方法,建议使用sysctl的设置方式

方法1:sudo echo 1 > /proc/sys/net/ipv4/ip_forward

方法2:sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

方法3:sudo sysctl -w net.ipv4.ip_forward=1

有的时候需要在/etc/sysctl.conf下添加一行:net.ipv4.ip_forward=1

我采用的是方法三。

3. iptables设置

配置防火墙,启用NAT,在usb0接口上启动IP伪装:

sudo iptables -F

sudo iptables -P INPUT ACCEPT

sudo iptables -P FORWARD ACCEPT

sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

注意:这一步执行后,一定要将配置持久化,否则下次开机启动后配置会失效,导致虽然共享网口的主机可以dhcp获取地址却无法上网。

防火墙配置持久化:导出防火墙配置并存到/etc目录下

1. 导出iptables的配置,并保存在/etc目录下

导出配置

2. 添加开机启动

新建/etc/network/if-pre-up.d/iptables文件,内容如下:

开机启动

4. dhcp服务

4.1 安装udhcpd服务

    sudo apt-get update

    sudo apt-get install udhcpd

4.2 配置DHCP服务

sudo vi /etc/udhcpd.conf

1. 修改网络接口,设置成对应的网卡号


将图中wlan0设置成对应的eth网卡号(udhpd.conf文件)  

2. 设置remaining,去除前面的#符号

    #remaining yes 去掉#改为   remain    yes

3. 设置树莓派的IP地址

        修改opt router为192.168.173.1,那么配置完成之后这个地址将作为网关,连接到raspberry eth口的设备网关需要设置为此IP.

        此处opt dns被修改为公共的DNS地址 114.114.114.114和 114.114.114.115

udhpd.conf的修改

4.3 使能DHCP

    配置 /etc/default/udhcpd

    sudo vi  /etc/default/udhcpd

    使用#符号注释DHCPD_ENABLED="no"

    DHCPD_ENABLED="no"    改为 #DHCPD_ENABLED="no"

udhcpd的修改

4.4  启动服务

1. 启动udhcp的服务:sudo service udhcpd start

2. 设置开机启动:sudo update-rc.d  udhcpd enable

5. dns服务

在进行调试的时候发现无法查询到raspberry使用的dns地址,按照常规方法查到的dns地址为127.0.1.1。在网上查了一下https://segmentfault.com/q/1010000002443769 感兴趣的可以参考一下这篇文章。

这就导致我在测试的时候遇到一个问题,pc可以通过ip地址访问,但是通过域名无法访问。然后我就在网上查了一些共用的dns服务器,设置后一切正常。关于这些共用的dns信息参考如下:

/********************************************************************************************************************************************************/

A、DNSPod DNS+:DNSPod的 Public DNS+是目前国内第一家支持ECS的公共DNS,是DNSPod推出的公共域名解析服务,可以为全网用户提供域名的公共递归解析服务!

DNS 服务器 IP 地址:

首选:119.29.29.29        备选:182.254.116.116

B、114DNS:国内用户量巨大的DNS,访问速度快,各省都有节点,同时满足电信、联通、移动各运营商用户,可以有效预防劫持。

DNS 服务器 IP 地址:

首选:114.114.114.114        备选:114.114.114.115

C、阿里 AliDNS:阿里公共DNS是阿里巴巴集团推出的DNS递归解析系统,目标是成为国内互联网基础设施的组成部分,面向互联网用户提供“快速”、“稳定”、“智能”的免费DNS递归解析服务。

DNS 服务器 IP 地址:

首选:223.5.5.5        备选:223.6.6.6

/********************************************************************************************************************************************************/

你可能感兴趣的:(2. 树莓派:通过树莓派的RJ45上网)