NAT默认允许从外部访问内部网络(或路由器的本地接口)吗?

NAT默认允许从外部访问内部网络(或路由器的本地接口)吗?

我使用的是较旧的 SOHO 路由器wl500gP(它是v1,但我认为这并不重要)与自定义奥列格固件。我的拓扑如下所示:

   192.168.3.3       192.168.3.2       NAT       192.168.2.1           192.168.2.170 (DHCP)
PC1<--------------------------->(WAN)wl500gP(LAN)<-------------------------------->PC2

根据网络界面,我在路由器上启用了 NAT(下面是一些输出,您可以验证它,因为使用自定义固件,路由器是 Linux 盒子)。

现在我发现:我可以从PC1访问路由器的LAN接口,但无法从PC1访问PC2。我不确定从外部世界访问(甚至部分)内部网络是否是正常的 NAT 行为。不是所有被转换的地址都隐藏在NAT后面吗?据我所知,我还没有设置虚拟服务器、端口转发、DMZ 等。以下是我的实验:

# PC1:

└──> ping 192.168.2.1
connect: Network is unreachable

└──> sudo route add -net 192.168.2.0 netmask 255.255.255.0 dev eth0

└──> ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_req=1 ttl=64 time=0.873 ms
64 bytes from 192.168.2.1: icmp_req=2 ttl=64 time=0.405 ms
64 bytes from 192.168.2.1: icmp_req=3 ttl=64 time=0.415 ms
64 bytes from 192.168.2.1: icmp_req=4 ttl=64 time=0.399 ms
^C
--- 192.168.2.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.399/0.523/0.873/0.202 ms

└──> ping 192.168.2.170
PING 192.168.2.170 (192.168.2.170) 56(84) bytes of data.
From 192.168.3.3 icmp_seq=1 Destination Host Unreachable
From 192.168.3.3 icmp_seq=2 Destination Host Unreachable
From 192.168.3.3 icmp_seq=3 Destination Host Unreachable
From 192.168.3.3 icmp_seq=4 Destination Host Unreachable
From 192.168.3.3 icmp_seq=5 Destination Host Unreachable
From 192.168.3.3 icmp_seq=6 Destination Host Unreachable


# PC2:
# Both pings to 192.168.3.2 and 192.168.3.3 are working. Also simple communication with 192.168.3.3 using netcat is possible.

这也是我的路由器的(我希望)最重要输出的安静复杂列表。这些主要是默认值(我已经更改了 IP 地址和其他一些内容,但我希望与 NAT、路由、桥接、转发等相关的内容不会导致上述 NAT 行为)如果有人能解释IP TablesIP Tables NAT部分,我将不胜感激。我注意到dnsmasq守护进程正在运行,因此看起来NAT DNS 处于活动状态。

wl500gP:


Interfaces
##########

br0       Link encap:Ethernet  HWaddr 00:1B:FC:6B:81:02  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:77202 (75.3 KiB)

eth0      Link encap:Ethernet  HWaddr 00:1B:FC:6B:81:02  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2561 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3101 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:264691 (258.4 KiB)  TX bytes:2594967 (2.4 MiB)
          Interrupt:4 Base address:0x1000 

eth1      Link encap:Ethernet  HWaddr 00:1B:FC:6B:81:02  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:14
          TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:78826 (76.9 KiB)
          Interrupt:12 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING MULTICAST  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vlan0     Link encap:Ethernet  HWaddr 00:1B:FC:6B:81:02  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:78014 (76.1 KiB)

vlan1     Link encap:Ethernet  HWaddr 00:1B:FC:6B:81:02  
          inet addr:192.168.3.2  Bcast:192.168.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2561 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2898 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:218593 (213.4 KiB)  TX bytes:2516953 (2.3 MiB)



Routing Table
#############

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.3     0.0.0.0         255.255.255.255 UH    0      0        0 vlan1
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 vlan1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.3.3     0.0.0.0         UG    0      0        0 vlan1


IP Tables
#########

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID 
 2366  197K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           state NEW 
  170 63047 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0           state NEW 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 flags:0x17/0x02 
  188 11280 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.2.1         tcp dpt:80 
    4   336 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpts:33434:33534 
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID 
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    0     0 DROP       all  --  !br0   vlan1   0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate DNAT 
    0     0 DROP       all  --  *      br0     0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 3069 packets, 2528K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain BRUTE (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain MACS (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain SECURITY (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 limit: avg 1/sec burst 5 
    0     0 RETURN     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x04 limit: avg 1/sec burst 5 
    0     0 RETURN     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 
    0     0 RETURN     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain logaccept (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW LOG flags 7 level 4 prefix `ACCEPT ' 
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain logdrop (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW LOG flags 7 level 4 prefix `DROP ' 
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           


IP Tables NAT
#############

Chain PREROUTING (policy ACCEPT 4 packets, 336 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  189 11340 VSERVER    all  --  *      *       0.0.0.0/0            192.168.3.2         

Chain POSTROUTING (policy ACCEPT 13 packets, 4303 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      vlan1  !192.168.3.2          0.0.0.0/0           
    0     0 MASQUERADE  all  --  *      br0     192.168.2.0/24       192.168.2.0/24      

Chain OUTPUT (policy ACCEPT 13 packets, 4303 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain VSERVER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  189 11340 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 to:192.168.2.1:80 



Process List
############

  PID USER       VSZ STAT COMMAND
    1 admin     1484 S    /sbin/init
    2 admin        0 SW   [keventd]
    3 admin        0 SWN  [ksoftirqd_CPU0]
    4 admin        0 SW   [kswapd]
    5 admin        0 SW   [bdflush]
    6 admin        0 SW   [kupdated]
    7 admin        0 SW   [mtdblockd]
   54 admin     1484 S    syslogd -m 0 -O /tmp/syslog.log -S -D -l 7 -b 1
   58 admin     1480 S    klogd
   59 admin     1480 S    telnetd
   64 admin     1120 S    httpd vlan1
   70 nobody     852 S    dnsmasq
   73 admin      964 S    lld2d br0 eth1
   74 admin        0 SW   [khubd]
   83 admin      656 S    p9100d -f /dev/usb/lp0 0
   85 admin     1480 S    rcamdmain
   99 admin     1480 S    watchdog
  101 admin     1040 S    upnp -D -L br0 -W vlan1
  150 admin     1484 S    sh -c /tmp/../usr/sbin/sysinfo > /tmp/sysinfo.htm
  151 admin     1480 S    /bin/sh /tmp/../usr/sbin/sysinfo
  167 admin     1480 R    ps




brctl show
##########

bridge name bridge id       STP enabled interfaces
br0     8000.001bfc6b8102   no      vlan0
                            eth1

答案1

这是正常现象,与 NAT 无关。默认情况下,Linux 将 IP 地址视为属于机器1,不针对特定接口。因此,它会在任何接口上将数据包应答到 192.168.2.1,而不仅仅是 LAN 接口。

也就是说,NAT 确实不是意味着防火墙,反之亦然。例如,您可以将内部主机 192.168.0.2–254 映射到公共 IP XYZ2–254,并将所有前往 XYZ253 的流量转发到 192.168.0.253。那还是NAT。

将整个子网映射到一个外部 IP 地址的副作用是,您会获得类似防火墙的行为,使连接基本上仅限于传出。但即便如此,您的防火墙规则仍应阻止这些数据包 — NAT 代码可能会被欺骗来映射您不希望的端口,但防火墙不会。而且它也更加灵活。 (如果您的 ISP 受到威胁,他们可能会将流量发送到您的专用 LAN 地址,并且您的计算机会很乐意转发它)。

PS:要查看 NAT 规则,您需要iptables -t nat -L.要查看允许通过路由器/防火墙转发的内容,您需要查看链FORWARD,而不是INPUT链。


脚注
1 或者更准确地说,计算机上的特定网络命名空间 — 可能只有一个,除非您使用某些虚拟服务器技术。中的 和 文件配置arp_ignore此行为。arp_announce/proc/net/ipv4/conf/*/

答案2

有几点需要注意。

  1. Iptables NAT 是基于连接的。一般来说(像 ftp 这样的协议有一些复杂性,它有 NAT 助手)只有连接的第一个数据包通过 NAT 表,然后决定如何处理连接的其余部分。
  2. NAT 并不意味着防火墙,反之亦然。如果您只设置了 NAT 规则,您将完全能够 ping 通所有内部主机。
  3. 如果数据包确实被转发,则仅流经 FORWARD 链。如果它们的目的地是本地计算机上的地址,则它们会转至 INPUT 链。

INPUT 链中的规则接受所有 ICMP 数据包,因此对路由器“内部 IP”的 ping 操作会成功。

另一方面,对内部网络上的设备的 ping 操作会通过防火墙规则将其丢弃的转发链。

相关内容