Linux 下设置 NAT 的一些问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Insomnia
V2EX    Linux

Linux 下设置 NAT 的一些问题

  •  
  •   Insomnia Feb 4, 2014 3601 views
    This topic created in 4465 days ago, the information mentioned may be changed or developed.
    现在使用的是 VMware vCloud 存放服务器(所谓的 VM)

    现在的问题是,在这个系统中使用 Linux 的 VM 。 每个 VM 都有两个 NIC ,其中一个是 IP 192.168.1.1,这个是给内网 ssh 进服务器的。 然后还有一个IP 是 192.168.2.1 这个是需要用来和外面做 NAT 的,外网的IP 是 123.123.123.123 这样子,然后这个 VMware vCloud 自动的设置NAT,将 192.168.2.1 和外网IP 123.123.123.123 对应了起来,现在配置完环境后,在内网使用 192.168.1.1 可以访问了。
    但是使用 123.123.123.123 就无法访问,所以现在想问的是,需要在 Linux 上面如何设置 iptabels 相关的命令才能化解这个问题呢?
    Supplement 1    Feb 4, 2014
    而且,我从这个 VM 上是可以直接访问外网的,我在外面做了一个访问地址,直接显示当前IP的。
    然后在这台 VM 上直接 curl http://www.getip.com/ip.php 这样子,直接显示了 NAT 的外网IP 123.123.123.123 所以这样看是不是算 VMware 已经自动配置好了 NAT 了呢?
    14 replies    1970-01-01 08:00:00 +08:00
    adrianzhang
        1
    adrianzhang  
       Feb 4, 2014
    netstat -rn
    看一下路由表是什么样的
    Insomnia
        2
    Insomnia  
    OP
       Feb 4, 2014
    @adrianzhang

    Kernel IP routing table
    Destination Gateway Genmask Flags MSS Window irtt Iface
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.3.0 192.168.1.254 255.255.255.0 UG 0 0 0 eth1
    192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
    0.0.0.0 192.168.2.254 0.0.0.0 UG 0 0 0 eth0



    其中 192.168.3.0 这个因为我们的机器同样在这个域里面,为了能通过 192.168.1.1 这个IP直接ssh登入。
    raptium
        3
    raptium  
       Feb 4, 2014 via iPhone
    你这个 NAT 不是在虚拟机上做的,是在外面做的
    所以在虚拟机上不管怎么设置都没用的
    Insomnia
        4
    Insomnia  
    OP
       Feb 4, 2014
    @raptium 外面好像会直接分配好 IP 到这台机器的。那么这台机器上是否还需要做些什么?还是直接NAT那里设置为空就好?

    因为我已经可以用内网的 192.168.1.1 可以访问了,但是用外网的 IP 还无法访问。
    Insomnia
        5
    Insomnia  
    OP
       Feb 4, 2014   1
    @raptium 还有,如果我关掉 VMware 里面设置的防火墙,就可以直接 tracert 123.123.123.123 这个外网 IP ,这样的话,那么这样的话能说明这个 NAT 是已经自己系统生成的 OK 的吗?谢谢了。
    raptium
        6
    raptium  
       Feb 4, 2014 via iPad
    没用过 vCloud 所以我也不是很清楚具体网络结构和功能
    根据你的描述 123 这个 IP 应该是母机的外网 IP
    如果要继续用 NAT, 可以在外面配置 DNAT 将某些端口转发到内网 IP
    或者如果 123 这个 IP 是你独享的一个固定 IP,那么在上游路由配置正确的情况下,可以关掉 NAT 直接用桥接模式,虚拟机内将此 nic 设为固定 IP 即可(此时这个 IP 就不能再被母机或其他虚拟机使用了)
    adrianzhang
        7
    adrianzhang  
       Feb 4, 2014
    @Insomnia 奇怪,我怎么收不到at的信息。。。你的路由表
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.3.0 192.168.1.254 255.255.255.0 UG 0 0 0 eth1
    192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

    第二条里的broadcast应为255.255.252.0,这样192.168.1.0和192.168.2.0才能给连进来。
    adrianzhang
        8
    adrianzhang  
       Feb 4, 2014
    @Insomnia 哦,对了,不仅是掩码改,还有网关也要改,192.168.1.254这个网关能路由到192.168.2.x段吗?如果改了掩码还是不能登,那就改网关上的配置,加一个路由项。
    tywtyw2002
        9
    tywtyw2002  
       Feb 5, 2014 via iPhone
    路由表问题

    0.0.0.0 192.168.2.254 0.0.0.0 UG 0 0 0 eth0
    Insomnia
        10
    Insomnia  
    OP
       Feb 5, 2014
    @raptium 现在我这边不能在外面配置 DNAT,好像这个NAT是默认系统弄好的,那这样的情况瞎,是不是我想要配置 route 才行?我是不是可以直接在 route 上配置一个路由,直接通外网的 ip ?


    @adrianzhang 第二条的规则只是为了让我本地的IP(192.168.3.1)可以 ssh 上 192.168.1.1 用的。 现在我从本地可以直接 ssh 上了。 只是外网的 ip 访问不到,打不开。。
    192.168.1.254 这个是在 eth1 上, 192.168.2.x 是 eth0 的,是需要给他们两个网卡再设置一个路由吗?




    @tywtyw2002 能详细的讲下,这里的问题以及如何修改吗?非常感谢
    adrianzhang
        11
    adrianzhang  
       Feb 5, 2014
    @Insomnia 哦,开始看错了以为要ssh到192.168.2.1

    按照你的路由表,从192.168.3.x发起到123.123.123.123的TCP到接收的路径是这样的
    192.168.3.x -- > 123.123.123.123
    123.123.123.123 --> 192.168.2.1 (eth0 on VM) [这是NAT在起作用]
    192.168.2.1 没有路径到192.168.3.x 所以192.168.3.x收不到响应。

    而路由表中192.168.2.0路由项将所有的包发往eth0,那么192.168.3.x跟eth0连了吗?如果没有连那就不能通喽。
    所以要改的话,将
    192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    里面的eth0去掉,或者加一条几乎一样就是最后为eth1的路由项
    adrianzhang
        12
    adrianzhang  
       Feb 5, 2014
    @Insomnia 仔细看一眼,是有回去路径的,因为192.168.2.1收到包后给回NAT,但是NAT上允许内部地址路由外部地址吗?
    Insomnia
        13
    Insomnia  
    OP
       Feb 6, 2014
    @adrianzhang 他这个 NAT 的是默认设置好的,我这里没有权限去设置,所以不知道是不是问题在这里。。

    我在 VM 里面直接使用 CULR 192.168.2.1 是可以拿到东西的,但是就是外面不行。。所以还是不解。
    adrianzhang
        14
    adrianzhang  
       Feb 6, 2014
    @Insomnia 做个小测试就好了,在192.168.3.x找个机器,在nat指向它,然后找3.x网段另一个机器,访问该机器的外地址。这样就知道是不是nat配置的问题了。一般说来,很多NAT不支持内网端口直接路由外端口。
    About     Help     Advertise     Blog     API     FAQ     Solana     4551 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 10:11 PVG 18:11 LAX 03:11 JFK 06:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86