欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将linux设备配置为路由器

程序员文章站 2024-02-11 13:44:40
...

1. 选取设备的某一接口配置为WAN口

        如下命令可将eth0.2接口配置为WAN口

iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE

         iptables有关知识可参加博文:iptables-朱双印博客

2. 为WAN口配置ip地址与网关

        如果直接接入公网,则需要提前申请一个公网ip与网关,如果是接入上一级路由器,可使用dhcp-client为WAN口申请ip地址与网关等信息,命令行示例如下(可使用busybox的udhcpc程序):

udhcpc -i eth0.2

udhcpc (v1.19.4) started
Sending discover...

Sending select for 10.29.48.252...
Lease of 10.29.48.252 obtained, lease time 86400
*curr=subnet=255.0.0.0
*curr=router=10.0.0.1
*curr=dns=221.12.1.227
*curr=lease=86400
*curr=serverid=10.0.0.1

        使用分配到的ip地址与网关配置WAN口ip与默认路由:

ifconfig eth0.2 10.29.48.252 netmask 255.0.0.0

route add default gw 10.0.0.1

3. 此时设备就可以ping通公网了

        可以ping通公网与域名了

~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=111 time=55.697 ms
64 bytes from 8.8.8.8: seq=1 ttl=111 time=52.540 ms

ping www.baidu.com
PING www.baidu.com (103.235.46.39): 56 data bytes
64 bytes from 103.235.46.39: seq=0 ttl=45 time=63.965 ms
64 bytes from 103.235.46.39: seq=1 ttl=45 time=77.097 ms

       如果公网ip地址可以ping通但是域名无法ping通,需要检查下是否有设置dns服务器地址,dns地址在如下两个配置文件中,分别保存的是ipv4与ipv6的dns地址,一般情况下配置文件中默认的dns服务器都可以使用,如果配置文件中的dns服务器不通,可以尝试重新设置其他dns服务器地址(步骤3中分配的就可以)

~ # ls -l /etc/resolv*
lrwxrwxrwx    1 1048177  1048177         27 Oct 21 13:21 /etc/resolv.conf -> /mnt/mtd/Config/resolv.conf
lrwxrwxrwx    1 1048177  1048177         30 Oct 21 13:21 /etc/resolvip6.conf -> /mnt/mtd/Config/resolvip6.conf

~ # cat /etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver ::
nameserver ::

 4. 使能设备的路由转发功能

        在步骤3及之前的操作只能保证设备自己可以上网,如果设备LAN口下接入的设备也想通过该设备上网(设备扮演路由转发的角色),则需要执行如下命令使能设备的路由转发功能:

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

        在此之后该设备与设备LAN口下挂接的设备就可以正常上网了(LAN口下接入设备的ip地址与路由、dns也需要正确配置,可以在LAN口启用dhcp-server动态分配,也可以由LAN口下的设备自行静态设置);

        注意:LAN口下挂接的设备可以正常ping通WAN口之上接的设备,如公网上的服务器等,但是WAN口之上的设备不可直接ping通LAN口下的设备,这是路由器本身的特性,因为LAN口所属网络为局域网,想要在WAN口之上的设备ping通LAN下的设备,可以在设备上进行端口映射配置(如DMZ功能),这样就可以在公网(WAN之上)*问内网(LAN内部)里的服务器了。

相关标签: 网络