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 Tables하고 IP 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. 특정 인터페이스를 타겟팅하지 않습니다. 따라서 LAN 인터페이스뿐만 아니라 모든 인터페이스에서 192.168.2.1에 대한 패킷에 응답합니다.

즉, 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는 연결 기반입니다. 일반적으로 말하면(NAT 도우미가 있는 ftp와 같은 프로토콜에는 몇 가지 복잡한 문제가 있음) 연결의 첫 번째 패킷만 NAT 테이블을 통과하고 나머지 연결에 대해 무엇을 할지 결정합니다.
  2. NAT는 방화벽을 의미하지 않으며 그 반대도 마찬가지입니다. NAT 규칙만 설정하면 모든 내부 호스트에 ping을 보낼 수 있습니다.
  3. 패킷이 실제로 전달되면 FORWARD 체인을 통해서만 흐릅니다. 목적지가 로컬 컴퓨터의 주소인 경우 INPUT 체인으로 이동합니다.

INPUT 체인의 규칙은 모든 ICMP 패킷을 허용하므로 라우터의 "내부 IP"에 대한 핑이 성공합니다.

반면, 내부 네트워크의 장치에 대한 핑은 방화벽 규칙에 따라 삭제되는 전달 체인을 통과합니다.

관련 정보