V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wuyanteng2016
V2EX  ›  宽带症候群

联通专线-端口映射问题

  •  
  •   wuyanteng2016 · 2016-06-30 18:36:29 +08:00 · 5906 次点击
    这是一个创建于 3105 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司今天接入联通专线,他们技术给了两个地址范围 [ 两个完全不一样的网段 ] 。

    上网的这个段都有 IP 地址,掩码和网关 ;

    另一个是 8 个地址的地址范围 [ 没掩码没上联网关 ] ,技术说,前后两个地址不能用。把中间的地址拿出来一个做网关,如果要给服务器做端口映射,请问中间 6 个地址怎么配置?
    17 条回复    2018-02-28 14:51:38 +08:00
    Siril
        1
    Siril  
       2016-06-30 19:38:31 +08:00
    这 8 个地址,第一个地址是网络地址, 最后一个是广播地址吧。
    然而这 8 个地址没上联网关?没上联网关咋用? 难道是把路由指给你了?
    上网的那个段是只给了 1 个地址吗?
    你从外部( vps 之类的) traceroute 一下看看是不是给路由到了上网的地址。


    若确实如此, 则很好配置啊
    Siril
        2
    Siril  
       2016-06-30 19:46:41 +08:00
    举例。。。

    ISP 给你 1 个 1.2.3.4/30 , 这个段只有俩 ip , 1.2.3.6 给你用, 1.2.3.5 是网关。
    又给你了 1 个 2.3.4.0/29 , 其中 2.3.4.0 是网络地址, 2.3.4.7 是广播地址 , 这俩不能用。

    从外部 traceroute 2.3.4.5 ,发现最后一跳是给你的 1.2.3.6

    如果这样。。。
    路由器需要加个接口(或者 vlan 子接口),配 2.3.4.1-6 中随便 1 个,
    此接口接个 vlan ,用来接其他用 2.3.4.x 地址的服务器。

    此时你可以在此路由器(或防火墙)上加访问控制限制啦 CBAC 啦 自反 ACL 啦 之类的,就很方便,
    服务器虽然使用了公网 ip ,却无须在服务器上配置软件防火墙,
    外部不能主动访问服务器上任意端口,按防火墙上的 acl 来。

    --------------------
    以上纯属猜测。
    Siril
        3
    Siril  
       2016-06-30 20:02:26 +08:00
    补充:
    路由器(或防火墙?)的此接口不要开 nat

    至于路由器, 基本上是这样:
    用命令行登上去配置的,基本都支持。。。 思科 华为 之类的厂商,企业级的。。。

    tplink 之类的你看着办。
    raysonx
        4
    raysonx  
       2016-06-30 21:07:25 +08:00
    下面我把你说的“上网的这个段”称为网段 A ,“ 8 个地址的地址范围”称为网段 B 。
    联通的路由器必须把网段 B 路由到网段 A 中的某一个 IP ,这样外网用户访问网段 B 时,数据包才能经由那个 IP 到达你的机房。
    从你的描述中无法得知这个“网段 A 中的某个一 IP ”是多少,但我猜测联通只给了你一个网段 A 的可用 IP ,否则就没法继续了。因此我猜测网段 A 是个 /30 (即掩码 255.255.255.252 )的网段。

    下面假设联通给你的信息是:
    网段 A : 198.51.100.0/30 ,网关 198.51.100.1/30
    网段 B : 203.0.113.0/29

    则网段 A 中你可用的地址只有 198.51.100.2 ,因为 198.51.100.0/30 和 198.51.100.3/30 分别是网络地址和广播地址,不能使用。
    网段 B 中, 203.0.113.0/29 和 203.0.113.7/29 是网络地址和广播地址,也不能使用。可用地址范围: 203.0.113.1-6/29 。你需要从中随便挑一个作为网段 B 的网关,假设它是 203.0.113.1 。

    则最管单的网络拓扑如下:

    [ 联通的路由器 198.51.100.1/30 ] ------- [198.51.100.2/30 你的路由器 203.0.113.1/29] --- [ 交换机] ----- [203.0.113.2-6/29 服务器]
    wuyanteng2016
        5
    wuyanteng2016  
    OP
       2016-06-30 23:22:09 +08:00
    @raysonx 分析的真对,请问最后 B 的 1-6 是怎么联通 A 的?他们的技术只说让我从其中 1-6 选一个 IP 作为网关
    wuyanteng2016
        6
    wuyanteng2016  
    OP
       2016-06-30 23:26:00 +08:00
    @Siril 看懂了,就是这意思。但是,我们需要从路由器上对服务器的 IP 做 NAT 端口映射,而不是直接把服务器的 IP 改成公网 IP
    raysonx
        7
    raysonx  
       2016-07-01 01:41:43 +08:00 via iPad
    @wuyanteng2016 需要正确配置路由表。
    假设你的路由器有两个网卡, eth0 和 eth1 , eth0 连外网, eth1 连交换机。

    路由器需要有两条路由(以 Linux 软路由为例,用 ip route -n 命令查看路由表):
    0.0.0.0/0 via 198.51.100.1 dev eth0
    203.0.113.0/29 dev eth1
    第二条路由表示,发往网段 b 的数据包应该直接丢到 eth1 网卡。
    第一条路由是默认路由( 0.0.0.0/0 ),表示发往其他地址的包应该经由 eth0 网卡转发给下一跳路由器 198.51.100.1 (即联通的网关)。网关是默认路由的同义词。

    所有连接到交换机的服务器需要配置默认路由到 203.0.113.1 ,假设网卡名是 eth3:
    0.0.0.0/0 via 203.0.113.1 dev eth3
    203.0.113.0/29 dev eth3
    也就是,对于网段 B 的包,直接丢给 eth3 这张网卡。对于其他地址,经由 eth3 转发给下一跳路由器 203.0.113.1 。

    如果你选择 1-6 中的其他地址作为网段 B 的网关,只要修改 eth1 网卡的地址,再修改所有服务器上的默认网关地址与之匹配即可。
    raysonx
        8
    raysonx  
       2016-07-01 02:11:58 +08:00 via iPad
    @wuyanteng2016 至于做端口映射,最简单的方案如下:
    更改上面的示例,把网段 B 换成内网地址段 C (假设是 192.168.0.0/24 ),配置方法是一样的。
    此时路由器同时连接外网和内网,不能互通,需要开启路由器上的 NAT 。
    NAT (这里只讨论其中最常见的 NAPT )分为 SNAT 和 DNAT 两种, SNAT 就是家用路由器默认开启的那种,让内网地址的机器可以发起连接访问外网。 DNAT 就是你说的端口映射,将一个外网地址的某个端口映射给内网 IP 的某个端口。
    假设 web 服务器的内网 IP 是 192.168.0.100 ,端口号 80/tcp ,你希望外网能通过 203.0.113.5:80/tcp 访问,则需要配置路由器上的 DNAT 规则(以 Linux 软路由的 netfilter 防火墙为例):
    iptables -t nat -A PRERPUTING -i eth0 -d 203.0.113.5 -p tcp --dport 80 -j DNAT --to 192.168.0.100:80
    这条规则在路由之前执行,表示对从 eth0 进来的,发往 203.0.113.5 的 80/tcp 的包,重定向到 192.168.0.100 的 80/tcp 端口。
    之后,所有访问那个外网端口的包,都会被重写目的地址到内网。
    raysonx
        9
    raysonx  
       2016-07-01 02:17:26 +08:00 via iPad
    @raysonx 更正 PRERPUTING 为 PREROUTING 。
    在这种配置下, B 网段的 8 个地址都是可用的,因为你没把它作为子网使用。另外,对 eth0 上的那个网段 A 上的端口进行映射也是可以的,这样你实际有 9 个 IP 可用,
    wuyanteng2016
        10
    wuyanteng2016  
    OP
       2016-07-01 06:34:07 +08:00
    @raysonx 不是,我觉得你想复杂了,昨天我突然想通了,联通的这种两个地址段方式,需要在我们公司现有拓扑之上新增加一个路由器转换一下,然后我们原拓扑的路由器把 8 个地址中可用的一个拿出来作为网关 [ 这个网关是我们原拓扑中路由器的 WAN 口地址 ] 这样就 OK 了,内网服务器端口映射就可以在我们原来路由器上使用了
    Siril
        11
    Siril  
       2016-07-01 08:06:37 +08:00
    @wuyanteng2016

    不错,加路由器是正途,这样最简单:
    外层的(说的是靠近公网的那个)纯路由不做 nat ,内层的(若干)路由器照常配置。
    ------------------------------

    不过, 服务器要经过两个路由器才能联网,坏任意一个都会断网;
    接上面我写的例子,
    路由器 1 接口 a 2.3.4.1 ,接口口 b 192.168.1.1 ,接口 c 2.3.4.1 。

    b->a 做 nat ,
    需要从公网访问的可以在 a 上 nat inside ,
    必须单独占公网 ip 的服务器接到 c 所连接的 vlan 上。

    --------------------------------------------------
    就是说 2.3.4.2-6 你不用也无所谓。
    wuyanteng2016
        12
    wuyanteng2016  
    OP
       2016-07-01 08:38:31 +08:00
    @Siril 是这样,哈哈。感谢!不过我尽量让运营商处做出改变。直接给我们 8 个公网 IP(包括上网的),这样的话一切都妥了
    Siril
        13
    Siril  
       2016-07-01 10:16:03 +08:00
    @wuyanteng2016
    其实我就一直很想要自己控制个网关, 然后内部可以用多个公网 ip 的。。。
    因为可以实现统一控制的按优先级的 QoS 。。。

    简直是看别人一种身在福中不知福的感觉。。。

    话说联通给你们多大带宽,是以何种技术限速的呢?
    还是说线路带宽 100Mbps , 给 100M 带宽呢
    wuyanteng2016
        14
    wuyanteng2016  
    OP
       2016-07-01 13:49:41 +08:00
    @Siril 联通 80M 专线。

    关键是再增加个路由,完全在预算之外,时间也不允许,来不及了
    snsd
        15
    snsd  
       2016-07-03 12:44:54 +08:00 via iPhone
    @wuyanteng2016 为啥不直接凑个整上 100 ?
    wuyanteng2016
        16
    wuyanteng2016  
    OP
       2016-07-03 20:14:21 +08:00
    @snsd 经费紧张😂 问题已经解决了。

    原因如下:

    运营商开通有两种方式:路由模式和网关模式

    路由模式:运营商给你分配两个网段。

    *第一个网段:对你来说只有一个可用 IP ,运营商提供网关和掩码,掩码长度 30 。但是内网服务器不能使用其他 IP 做公网映射
    *第二个网段:只有 8 个公网 IP ,没网关没掩码,经过掩码计算会得出掩码是 29 位,即 255.255.255.248 。而网关需要你从中间 6 个 IP 中选择一个作为网关(去掉前后两个广播地址)。



    路由模式 就是我一开始说的这种情况,需要自己在原拓扑的路由器之上,再增加一个路由用于地址转换,自己选择一个 IP 做网关才行。坏处是:公司接入成本增加,好处对我来说没有。

    网关方式:运营商直接给你 8 个 IP 地址,去掉前后两个网络地址,直接在自己拓扑路由器上配置即可。当然,上网也是直接选一个 IP 配置上就 OK 。


    以上两种方式建议同行在开通时,提前跟销售书面或口头说明,以免造成不便
    gzslw
        17
    gzslw  
       2018-02-28 14:51:38 +08:00
    无耻地挖一下坟。。。。这样的话直接给的这几个地址会涉及到分配 IP 的问题吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:47 · PVG 05:47 · LAX 13:47 · JFK 16:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.