zoukankan      html  css  js  c++  java
  • [转载]Openwrt配置NAT6

    本文转载恩山无线论坛的帖子:http://www.right.com.cn/forum/thread-253712-1-1.html

    前言

    近年来IPV6覆盖逐渐增大,部分地区电信可以直接获取到全球v6地址,再加上本身覆盖就很广泛的校园网基础,ipv6用户其实不在少数。本身v6的初衷是解决v4地址不够而推出的,然而因为各种原因,并不是所有设备都需要或者能接入公网,这样就还是要回归到nat上。
    今天就来实战操作一下IPV6-NAT。本文学习提炼自网络,文末附地址。
    先了解下 摘自百度

    1. 什么是NAT?

    NAT即Network Address Translation,它可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上。NAT路由器在将内部网络的数据包发送到公用网络时,在IP包的报头把私有地址转换成合法的IP地址。

    2.在NAT实验中需要理解的术语: 

    1) 内部局部地址(Inside Local):在内部网络中分配给主机的私有IP地址。
    2) 内部全局地址(Inside Global):一个合法的IP地址,它对外代表一个或多个内部局部IP地址。
    3) 外部全局地址(Outside Global):由其所有者给外部网络上的主机分配的IP地址。
    4) 外部局部地址(Outside Local):外部主机在内部网络中表现出来的IP地址。

    3.NAT的优点和缺点:

    NAT的优点:
    (1) 对于那些家庭用户或者小型的商业机构来说,使用NAT可以更便宜,更有效率地接入Internet。
    (2) 使用NAT可以缓解目前全球IP地址不足的问题。
    (3) 在很多情况下,NAT能够满足安全性的需要。
    (4) 使用NAT可以方便网络的管理,并大大提高了网络的适应性。
    NAT的缺点:
    (1) NAT会增加延迟,因为要转换每个数据包包头的IP地址,自然要增加延迟.
    (2) NAT会使某些要使用内嵌地址的应用不能正常工作.

    4.NAT的工作原理:

    当内部网络中的一台主机想传输数据到外部网络时,它先将数据包传输到NAT路由器上,路由器检查数据包的报头,获取该数据包的源IP信息,并从它的NAT映射表中找出与该IP匹配的转换条目,用所选用的内部全局地址(全球唯一的IP地址)来替换内部局部地址,并转发数据包。
    当外部网络对内部主机进行应答时,数据包被送到NAT路由器上,路由器接收到目的地址为内部全局地址的数据包后,它将用内部全局地址通过NAT映射表查找出内部局部地址,然后将数据包的目的地址替换成内部局部地址,并将数据包转发到内部主机。

    开始

    首先我们的网络支持ipv6,(这是废话)LZ这里IPV6的原生Native;其次需要一台支持lede的设备;然后设备可以以动态获取ipv6(wan6有v6地址 可以ping通ipv6.google.com)。
    这是前提。

    1.准备工作

    注意以下不是必要操作,如有luci界面自行略过。

    固件是在lede官网下载的官方lede固件
    LZ的设备是HG255D比较老,因此官网lede固件没有luci界面,需要自己安装,LZ先将路由器单独接入可以直接联网的网络,电脑使用网线接入HG255D,lede默认的dropbear开启了ssh端口22,我们使用xshell等终端连接到路由器
    帐号密码root/admin
    然后终端内输入命令

    opkg update
    opkg install luci
    opkg install luci-i18n-base-zh-cn
    opkg install luci-i18n-firewall-zh-cn
    opkg install nano

    这样luci界面就安装好了并且有了中文。

    2.安装IPK包

    将设备接入有提供IPv6的接口,
    在luci界面里-接口-一栏设置好IPv4联网(pppoe或者其他),联网成功后,
    然后使用ping ipv6.google.com查看是否可以ping通
    可以通过则继续以下操作,此处默认是可以

    安装本次nat的必要包

    opkg install ip6tables
    opkg install kmod-ipt-nat6

    这两个包对内核要求还是蛮高的所以选择lede 其他的固件lz没有尝试

    3.开始配置

    使用终端nano、vi等命令修改也可以使用winscp工具打开
    修改/etc/config/network文件,添加以下字段,若已存在字段仅地址不同,可以不用修改。或者改成你喜欢的前缀。

    config globals 'globals'
    option ula_prefix 'eeee:eeee:eeee::/48' 

    →等效于
    在luci的web界面修改
    接口-全局网络选项-IPv6 ULA 前缀,前缀可以不和lz一样可以自定义

    4.配置DHCPv6

    终端内使用nano、vi、winscp

    修改/etc/config/dhcp文件,将config dhcp 'lan'那一栏修改为以下内容:

    config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv6 'server'
    option ra 'server'
    option ra_management '1'
    option ra_default '1'

    等效于
    luci界面里打开
    接口-lan-下方 DHCP服务器-ipv6设置
    DHCPv6 服务 (DHCPv6-Service) 服务器模式
    路由通告服务 (Router Advertisement-Service) 服务器模式
    NDP 代理 (NDP-Proxy) 禁用
    DHCPv6 模式 (DHCPv6-Mode) 无状态的 + 有状态的
    总是通告默认路由(Always announce default Router) 勾选

    5.添加防火墙脚本

    修改/etc/firewall.user在文末添加
    假设WAN对应的接口为eth0.2,不是eth0.2的,自行修改成你的wan口设备名,添加以下内容:

    ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE

    等效于在luci界面
    网络-防火墙-自定义规则 添加这一行 保存应用

    6.配置网关(重要!)

    在终端内使用

    ip -6 route | grep default

    查看当前IPv6默认路由
    结果显示如下
    default from (your ipv6) via (gateway) dev eth0.2 proto static metric 512

    其中(gateway)括号里的 就是你网络状态下的网关
    例如楼主这里显示
    default from 2001:abcd:abcd::d:abcd via fe80::224e:71ff:bbbb:cccc dev eth0.2 proto static metric 512

    那么其中的
    fe80::224e:71ff:bbbb:cccc
    就是当前网络的默认网关,这一步至关重要
    我们需要将其添加到默认路由
    终端里输入命令

    route -A inet6 add default gw fe80::224e:71ff:bbbb:cccc dev eth0.2

    至此配置方面就好了
    接下来重启下服务使设置生效

    /etc/init.d/firewall restart
    /etc/init.d/network restart

    注意:
    如果是使用其他低内核的固件做如上的操作,
    firewall那条命令的输出显示可能会提示什么ip6tables错误的 说明最开始安装的ip6tables不支持此固件的低内核 请换高版本内核使用此教程。network 重启会有短暂的断网 耐心等待网卡的DHCP。

    两条命令结束后 电脑仍然无法打开ipv6的话 请重启电脑的网卡 具体操作网络和共享中心-更改适配器设置,右击禁用网卡,再启用网卡。

    此时电脑就应该可以正常访问v6了。 

    7.添加开机自动加入IPv6路由

    由于route -A inet6 add default gw 命令重启会失效所以我们需要建立一个脚本让路由器开机自动添加
    具体操作
    在/etc/hotplug.d/iface/目录下新建名字为 90-ipv6 的文件
    修改内容为

    #!/bin/sh
    [ "$ACTION" = ifup ] || exit 0
    route -A inet6 add default gw fe80::224e:71ff:bbbb:cccc dev eth0.2

    注意:记得修改成自己的网关
    然后给予可执行权限:

    chmod +x 90-ipv6

    至此开机启动也完成了。

    最后

    通过http://test-ipv6.com/或者http://ipv6-test.com/测试IPv6是否正常

    如果ipv6访问不正常 则可能是dns污染 手动修改wan6的dns方法是:
    修改wan6-高级设置下的这里 取消勾选对端通告的DNS服务器 自己自定义为谷歌的v6dns
    注意别填错了 取消勾选他会变到下一行

    -----------------------------------------------------------------------------------------------
    使用对端通告的 DNS 服务器
    留空则忽略所通告的 DNS 服务器地址
    使用自定义的 DNS 服务器
    2001:4860:4860::8888
    2001:4860:4860::8844

    ----------------------------------------------------------------------------------------------------
    会玩的童鞋可以更进一步可以修改dnsmasq的配置文件 指定域名指定解析

     

  • 相关阅读:
    广佛肇城轨年内通车 佛山西站预计2017年中通车
    MTK+Android编译
    电量检测芯片BQ27510使用心得
    放大电路的分析方法
    放大电路的分析方法
    模拟电子放大电路分析
    模拟电子技术二极管
    unsigned 整型实现无溢出运算
    hdu 5317 RGCDQ(前缀和)
    CodeForces 429 B Working out(递推dp)
  • 原文地址:https://www.cnblogs.com/Arago/p/7765873.html
Copyright © 2011-2022 走看看