怪物猎人世界吧 关注:839,985贴子:21,206,468
  • 7回复贴,共1

网络nat类型转换全攻略

取消只看楼主收藏回复

开一个坑,本攻略分为两个部分,第一个部分是网上已经传遍了的各种方法,这种方法只能用于运营商❶网络拓扑还算好并且运营商配合用户的情况,第二部分是进阶高级版,只要你能够上网,就算遭到严重限制,网络拓扑一片混乱,运营电话打都打不通,ps4甚至都无法显示你的nat类型的情况下,仍然可以nat2甚至1不过需要一定硬件基础和计算机常识并且敢于折腾
❶网络拓扑可以理解为网络的结构比如你与公网之间有几个路由器之间是什么关系采用什么nat之类的
ps:我就是第二种情况,心累的不行
ps2:后来的可以只看楼主
ps3:真不想写啊,我感觉写了之后贴吧能看懂而且做出来的人屈指可数
ps4:谁让我无聊呢
ps5:什么时候有事干了可能就坑了
ps6:一些专有名词我会用数字标出并且在下面假装贴上定义
ps7:你可能需要一个单片机/树莓派>路由器>=电脑以及可能需要一个网卡来接线(觉得热点能用的勇士们随意)以及几毛存款来完成第二种方法
ps8:看了7之后你们还会想要做第二种方法么
ps9:其实奇游的那个路由器挺好的,我的第二种方法相当于自制一个ps4加速器,不过理论上来讲我的方法可以达到nat1而不是大多数加速器的nat2
ps10:如果你发现有加速器能把你加速到nat1那只有两种可能,1你被坑了,其实改个局域网配置就可以到1,或者你的是黄金帝王套餐,一个月超贵的那种
ps11:如果无聊到看到7还没有退出还把我剩下的废话都看完了,请留个名,同为寒假无聊人


IP属地:北京来自Android客户端1楼2018-02-03 00:20回复
    nat类型一共有四种分别对应nat1~3还有nat失败(nat失败是不是第四种我不敢确定),因为猛汉王采用的是p2p的联机方式,所以nat类型会严重影响到联机的成功程度以及流畅程度,这种情况在服务器联机中是不存在的,而nat类型大多数情况下由网络拓扑直接决定,如果是运营商的网络拓扑比较好的话就能直接享受比较好的起点,但是如果网络运营商的网络拓扑比较差并且拒绝变动的情况下,那么短板效应将直接影响nat类型,当然运营拓扑好自己玩死了的也大有人在,下面科普一下4种nat类型,来源是nat的百度百科,从上到下限制从松到紧,分别对应四种nat类型,这是后面改造网络拓扑的理论基础,看不懂不看也可,看懂了更好
    ——————————————————非原创百科部分—————————————————————————
    Full cone NAT
    即著名的一对一(one-to-one)NAT一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机都能通过给eAddr:port2发包到达iAddr:port1Address-
    Restricted cone NAT限制地址,即只接收曾经发送到对端的IP地址来的数据包。一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机(hostAddr:any)都能通过给eAddr:port2发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到 hostAddr:any. "any"也就是说端口不受限制

    Port-Restricted cone NAT类似受限制锥形NAT(Restricted cone NAT),但是还有端口限制。一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。一个外部主机(hostAddr:port3)能够发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:port3.

    Symmetric NAT(对称NAT)每一个来自相同内部IP与port的请求到一个特定目的地的IP地址和端口,映射到一个独特的外部来源的IP地址和端口。同一个内部主机发出一个信息包到不同的目的端,不同的映射使用外部主机收到了一封包从一个内部主机可以送一封包回来

    ——————————————————————非原创百科部分—————————————————————


    IP属地:北京3楼2018-02-03 00:40
    回复
      第一种方法
      适用情况:运营商手中有闲置公网ip且愿意给你或已给你,外面只有一个路由器并且共用的人数较少,一句话就是运营能提供更好的nat类型但是生生被你家中的网络拓扑拉了后腿
      具体方法:网络最佳的情况就是拥有公网ip,有了公网ip那么就没有nat,所谓nat就是在公网ip不够的情况下多人凑活一个ip上网用的,有了公网ip那你就没有nat,也就相当于nat1的状态,那么如何确定是否拥有公网ip呢,首先你可以百度ip查看自己的ip地址,然后看看重新拨号重启光猫之类的是否改变,如果改变那么八成就是公网ip了,再者你可以不在家的时候用windows的远程桌面远程你的电脑(ip用百度显示的ip),如果可以那么你一定就是公网ip,这种情况下,你就是nat1的网络了
      但是九成九的人家里都不只有一个设备上网,那么一定会有nat产生,那么如何追平家中网络带来的负面影响呢,大体上分为两种,第一种dmz主机,一般在路由器中会有显示,会让输入一个ip地址,这个ip地址就用本地ip,这个可以在ps4网络状态或者电脑网络接口信息里面看(百度),大多数家庭都是192.168开头的,这个功能可以把这个主机的所有端口映射出去,访问路由器就是访问这个ip,第二种是upnp,这种是端口映射,可以把特定端口映射出去,访问路由器相应端口就可以直接访问电脑同样的端口,其中49152到65535为闲置端口,基本不会被程序指定,不过你把0~65535都映射出去也可以
      通过以上两种方法你就可以享受到运营直接提供给你的网络环境了,至于找客服要ip改网络模式这就看别的帖子吧,我没有什么了解
      不明白的地方可以留言或者私信,不过请先百度


      IP属地:北京10楼2018-02-03 01:01
      回复
        在写第二种方法之前先扯点有的没的,相信大多数人家里面网络都没有公网ip,上传速度极慢,从网通到电信就跟断网了似的,那么这是为什么呢,原因很简单,运营商把上传和ip卖给各大公司的服务器了,他们出的起钱,所以运营就把客户应有的一些服务克扣了(不过这也是合约一部分),那么网络环境不好如果我可以获得一台服务器的话,那么不就很舒服了,那么接下来的第二种方法的主要思路就是如何获取到一个服务器并且要求所有访问服务器的人都会直接访问到我的ps4就好了,如此一来我能连接到服务器,服务器高速网络又可以访问到别人,而且服务器的ip也只供我的ps4使用,如此一来运营的网络就彻底被排除,整个网络的好与坏可以说完全由你自己来决定了,这对于某些深受城中村辣鸡网络困扰的人可以说简直就是救赎(我就是那种猛汉王随机集会都完全无法连通的辣鸡城中村网)


        IP属地:北京11楼2018-02-03 01:12
        回复
          接下来的第二种方法会有很多图而且我很可能不会一口气写完,流量的话小心一些,还有我使用腾讯云完全是因为优惠多,而且腾讯财大气粗一直以服务器好闻名,如果觉得贵之类的话,找别的也可以,嘛,随你们了


          IP属地:北京12楼2018-02-03 01:19
          回复
            如何租借服务器
            以腾讯云为例子(全球的运营商都行,我现在就是一个北京一个东京,联机失败换一个),首先上官网,这个百度就好,注册或者登陆(不会就一头撞死吧,拯救不了),然后有两个福利,一个是大学生的话可以享受每个月10块的超低优惠(需要学生验证)

            还有就是如果你进行了实名认证可以有7天的免费试用,如果你有设备并且想要试试但是不确定能不能成功的话你可以用这个优惠来练手

            记住是云服务器CVM不是别的
            如果你没有办法享受这些优惠的话可以在左上角的产品中选择第一项云服务器然后点击立刻选购,为了节约金钱我们选择自由配置,然后选择一个离你最近的地域,可用区随便选择,型号越便宜越好,反正咱们不要性能(不要用国外的,去国外运营商买国外服务器的话更加便宜)

            系统我们选择公共镜像的Ubuntu 16.04.1 LTS 64位(反正用最新的64位就好,用老的其实也没啥区别)

            硬盘我们选择云硬盘,网络按量的话带宽就可以随便拖拽了,1个g才8毛,玩游戏一个月能用掉10个g算你强

            最后一页设置一下密码然后安全组设置成开放所有端口(别的运营商也一定要开放服务器的所有端口),如果说被服务器官方限制了访问那么配置失败就很难察觉了


            IP属地:北京14楼2018-02-03 01:48
            回复
              下面的内容就有一定难度了,如果linux系统有基础的话应该不难,如果没有基础的话百度搜索一下,我下面给了非常完善的提示,如果提示不懂搜索一下就好了,束手无策的请从注释开始阅读
              接下来第二步就是配置服务器的openvpn了,http://bl og.topspeed snail.c om/archives/4860,给大家一个博客,按照里面说的一条一条照做就可以配置好openvpn了,其中有两处不要照做,第一处是在配置openvpn服务,如果你的服务器和你的电脑/ps4的时间不同那么不要开启TLS验证

              还有一处就是

              从配置服务器到下面的启动openvpn服务中间都不要执行 ,你的服务器上八成没有ufw这个防火墙而是iptables这个防火墙,这里的操作更换成
              sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
              sudo vim /etc/rc.local
              然后把iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE添加到exit 0上面一行
              最终效果是这样的

              最后一节生成OpenVPN客户端使用的ovpn中的内容可以不用做,我会给你们一份客户端的配置文件,你们自己复制粘贴到客户端里面就好,这个后面会提到,如果你采用我的配置文件的话你需要把~/openvpn-ca/keys/目录下的ca.crt,client1.key和client1.crt拷贝到自己的电脑中(这里可以使用winscp的sftp来拷贝,具体的使用方法百度就好了,还不懂可以私信我)
              注:连接服务器可以使用shell5,linux系统直接ssh就好,注意,腾讯云的初始用户名是ubuntu,密码是设定或者随机密码,这个能在腾讯云控制台右上的消息箱中找到新建服务器时的消息里面看到你的用户名和密码,忘了可以重置,shell5不会用可以百度,博客和微博中出现的sudo是一个提高权限的命令,sudo后面跟着命令内容可以再输入密码后(如果没有让你输入密码的话也是可以的),可以提高你的权限来执行命令,如果不确定什么命令权限不够 那你可以把所有的命令前面都加上sudo,如果你的用户名不是ubuntu之类的而是root(小写的,一个都不能差),那么你拥有最高权限,所有的命令都不要加sudo,看见sudo开头的请去掉sudo,不然有可能会报错,服务器的openvpn配置过程中使用的文本编辑器是vim(使用方法百度一下),其他的编辑器也可以,所有看到让你改文本的那种都可以用vim来更改,如果你输入vim提示命令不存在(No command found或者The program xx is currently not installed),可以使用sudo apt-get install vim然后一路回车来安装,最后一定要把iptables那行命令加到/etc/rc.local这个文件里面(exit 0前面,如果没有exit 0那么加在文件最后就好),不然每次重启服务器之后需要重新输入一边这个命令(添加到文件中的命令不用加sudo,但是在命令行中执行的话不是root用户就要加sudo)
              shell5提示
              安装好双击打开,新建一个配置输入你服务器的ip地址(这个在腾讯云的后台管理中可以看到,以后会多次用到)

              找不到服务器请确定是否选中对应地区,用主ip地址下面的那个公,不要用内
              输入完确定后连接,会让输入用户名,用户名用ubuntu(运营给你的用户名,大多数是root腾讯的ubuntu系统是Ubuntu),密码输入好之后就进入服务器的命令行了,注意命令行中ctrl+c是中断命令复制请右键或者ctrl+insert,粘贴是shift+insert键盘小可能会倍缩写成ins,多找找就有
              vim提示
              打开文件
              vim 文件地址
              退出vim
              :q回车
              保存并推出
              :wq回车
              强制执行在冒号后面加一个!
              进入编辑模式
              字母i
              退出编辑模式
              esc
              编辑模式下不能执行:开头的命令,左下角为insert的时候是编辑模式,如果不是可以尝试esc然后字母i进入编辑模式


              IP属地:北京15楼2018-02-03 02:37
              收起回复
                配置好服务器的openvpn之后就可以开始配置本地的了,因为大多数家用路由器以及ps4是不能直接使用openvpn的,所以说我们需要一个设备链接到服务器的openvpn然后把网络共享给ps4,因为linux系统可定制性较强,所以我们这里就还是用linux系统作为例子,这里用的是我的树莓派,当然你把路由器刷机或者直接用电脑也是可以的,而其实nat2类型用windows系统来做其实也并不难,需要做到的一共只有两点,第一电脑的隧道出口处需要有伪装,第二电脑需要支持转发数据包,如何利用windows来做大家可以百度一下试试,当然直接电脑连接vpn然后ps4连接电脑可能直接可以连上vpn,不过如果你发现你的ps4nat类型没有改变或者无法通过电脑上网但是电脑可以通过vpn上网,那么你就可以试试看上面两条是不是有哪里出现了问题
                而linux系统的话没有windows那么智能,linux系统连接上vpn之后ps4连接你的设备是一定不能上网的,需要以下两个步骤,第一连接openvpn之后更改/etc/sysctl.conf然后将其中的net.ipv4.ip_forward=1前面的#去掉然后保存文件,或者直接在文件末尾把net.ipv4.ip_forward=1添加上然后保存文档即可,保存后在重启后生效也可以用sudo sysctl -p来让它立刻生效,第二连接上vpn之后用ifconfig命令查看vpn的设备号,一般是tun0,然后把所有出这个端口的数据包的源地址进行伪装sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE,这个命令将会在重启后失效,可以重启后在输入一遍,或者像服务器那样,把这个命令复制到/etc/rc.local中(exit 0前)如果第二步做的没有问题,那么你应该可以利用vpn上网了,如果第一步做的没有问题,那么在设备可以上网的情况下,连接设备的设备也能上网
                客户端openvpn的配置
                如果你的系统是windows那么照着博客中最后一节的内容生成一个ovpn文件然后用winscp拷贝到自己的电脑中就可以用ovpn上网了,如果是linux系统,那么客户端可以利用sudo apt-get install openvpn来安装,然后将服务器~/openvpn-ca/keys下面的ca.crt client1.crt client1.key拷贝到自己设备的/etc/openvpn下面然后在这个目录下新建一个名为client.conf的文件(在目录下使用vim 新文件名,写入后保存就可以新建文件了),将配置文件复制到里面然后使用sudo openvpn client.conf或者sudo sysctl start openvpn@client就可以启动了(重启后需要重新执行一遍该命令,懒得可以也加入到/etc/rc.local这个文件中)
                ——————客户端配置文件——————
                client
                dev tun
                proto udp
                <connection>
                remote 这里填写服务器ip地址 1194
                </connection>
                persist-key
                persist-tun
                ca ca.crt
                cert client1.crt
                key client1.key
                ——————客户端配置文件——————
                如果照做了所有的步骤并且没有出错的话此时你就可以连接你的设备并且享受nat2的网络了,以上的过程同样可以应用于国外服务器,从而实现对于国外网络访问速度的加快,如果你觉得自己电脑访问国外服务器延迟大丢包多,那么你也可以先连接到国内服务器,然后从国内服务器连接到国外服务器来减少丢包和延迟,至于能不能找到物美价廉的高速高质网络,来达到优化访问速度,那就是一个人品活了,觉得贵的话,甚至可以租借vpn给他人来回本


                IP属地:北京19楼2018-02-03 11:13
                回复