ISP 라우터

ISP 라우터

추가 네트워크 세그먼트(LAN2)를 추가하고 LAN2의 리소스에 액세스하려면 LAN1에 일부 시스템이 필요합니다. LAN2의 일부 시스템은 LAN1 및 WAN 세그먼트의 리소스에도 액세스해야 합니다. LAN1과 LAN2 사이의 게이트웨이는 이중 홈 Linux 서버인 "SRV-01"이라고 합니다.

LAN1에서 LAN2에 액세스하거나 LAN2에서 LAN1에 액세스할 수 없으며 LAN2에서 WAN에도 액세스할 수 없습니다. LAN1 호스트와 LAN2가 함께 통신하는 방법과 LAN2 시스템에서 WAN에 대한 액세스를 허용하는 방법이 궁금합니다.

문제 해결

ping을 사용하여 다음과 같은 응답을 받았습니다.

IP (소스) ---> IP (대상) : Ping 응답
------------------------------------- ------------
192.168.5.33(LAN1의 클라이언트) ---> 192.168.5.8(SRV-01:eth0) : OK
192.168.5.33(LAN1의 클라이언트) ---> 10.0.2.1(SRV-01:eth1) : 아니요
192.168.5.33(LAN1의 클라이언트) ---> 10.0.2.2(SRV-02:eth0) : 아니요
*.*.*.*.* (SRV-01) ---> 192.168.5.33 (LAN1의 클라이언트) : OK
*.*.*.*.* (SRV-01) ---> 10.0.2.2 (SRV-02:eth0) : 확인
10.0.2.2(SRV-02) ---> 10.0.2.1(SRV-01:eth1) : 확인
10.0.2.2(SRV-02) ---> 192.168.5.8(SRV-01:eth0) : 확인
10.0.2.2(SRV-02) ---> 192.168.5.33(LAN1의 클라이언트) : 아니요

네트워크 토폴로지

WAN --- (ISP 라우터) --- LAN1 --- (SRV-01) --- LAN2 --- (SRV-02) 

ISP 라우터

ISP(인터넷 서비스 공급자) 라우터는 NAT(두 개의 네트워크 어댑터)를 제공하고 LAN1에 대한 DHCP 서버 역할을 합니다. 우리는 이 장비에 대한 쉘/관리자 액세스 권한이 없습니다.

  • xxx.xx.xx.xx/xx(eth0, WAN)
  • 192.168.5.4/24(eth1, LAN1)

SRV-01 서버

SRV-01은 LAN1 서브넷과 LAN2 서브넷 간의 게이트웨이 역할을 하는 이중 홈 Ubuntu Server 14.04(2개의 네트워크 어댑터)입니다.

  • 192.168.5.8/24(eth0, LAN1)
  • 10.0.2.1/24(eth1, LAN2)

/etc/네트워크/인터페이스

# Loopback
auto lo
iface lo inet loopback
# LAN1
auto eth0
iface eth0 inet static
    address 192.168.5.8
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.4
    dns-nameservers xxx.xxx.xxx.xxx
# LAN2
auto eth1
iface eth1 inet static
    address 10.0.2.1
    netmask 255.255.255.0
    network 10.0.2.0
    broadcast 10.0.2.255
    dns-nameservers xxx.xxx.xxx.xxx

라우팅

~$ netstat -r
커널 IP 라우팅 테이블
대상 게이트웨이 Genmask 플래그 MSS 창 irtt Iface
기본값 192.168.5.4 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 유 0 0 0 eth1
로컬넷 * 255.255.255.0 U 0 0 0 eth0
~$ IP 경로 표시
192.168.5.4 dev eth0을 통한 기본값
10.0.2.0/24 dev eth1 proto 커널 범위 링크 src 10.0.2.1
192.168.5.0/24 dev eth0 proto 커널 범위 링크 src 192.168.5.8

IP 포워딩

~$ sudo sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

방화벽

Ubuntu "Uncomplicated FireWall"(UFW)은 서버 "SRV-01"에서 비활성화되어 있으며 모든 iptables 체인에는 ACCEPT 대상으로 설정된 기본 정책이 있습니다. 아직 단일 패킷이 FORWARD 테이블로 이동하지 않았다는 점에 유의하세요.

~$ sudo ufw 상태
상태: 비활성
~$ sudo iptables -L -v | grep 정책
체인 INPUT(정책 ACCEPT 369 패킷, 28278바이트)
체인 FORWARD(정책 ACCEPT 0 패킷, 0바이트)
체인 출력(정책 ACCEPT 187 패킷, 19740바이트)

SRV-02 서버

SRV-02는 네트워크 어댑터가 1개 있는 Ubuntu Server 14.04입니다.

  • 10.0.2.2/24(eth0, LAN2)

/etc/네트워크/인터페이스

# 루프백
자동 로
iface lo inet 루프백
# LAN2
iface eth0 inet 정적
    주소 10.0.2.2
    넷마스크 255.255.255.0
    네트워크 10.0.2.0
    방송 10.0.2.255
    DNS-네임서버 xxx.xxx.xxx.xxx

라우팅

~$ netstat -r:
커널 IP 라우팅 테이블
대상 게이트웨이 Genmask 플래그 MSS 창 irtt Iface
기본값 10.0.2.1 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 유 0 0 0 eth0
~$ IP 경로 표시
10.0.2.1 dev eth0을 통한 기본값
10.0.2.0/24 dev eth0 proto 커널 범위 링크 src 10.0.2.2

방화벽

Ubuntu "Uncomplicated FireWall"(UFW)은 서버 "SRV-02"에서 비활성화되어 있으며 모든 iptables 체인에는 ACCEPT 대상으로 설정된 기본 정책이 있습니다.

~$ sudo ufw 상태
상태: 비활성
~$ sudo iptables -L -v | grep 정책
체인 INPUT(정책 ACCEPT 0 패킷, 0바이트)
체인 FORWARD(정책 ACCEPT 0 패킷, 0바이트)
체인 OUTPUT(정책 ACCEPT 0 패킷, 0바이트)

내가 여기서 무엇을 놓치고 있는 걸까요? SRV-01에 어떤 고정 경로를 추가해야 하는지, 기본 게이트웨이가 제대로 구성되어 있는지 궁금합니다.

답변1

이 설정에는 두 가지 문제가 있습니다.

  1. LAN1의 호스트는 LAN2 세그먼트에 대해 아무것도 모릅니다. SRV-02에서 LAN1(host1이라고 함)의 호스트를 핑하면 패킷은 SRV-01을 통해 라우팅되어 호스트1에 도달합니다. 그러나 호스트1은 LAN2에 대한 특정 경로가 없기 때문에 기본 게이트웨이(ISP 라우터)로 응답을 보냅니다. (ISP 라우터는 a) LAN2에 대해서도 모르기 때문에 이를 기본 게이트웨이로 보내거나 b) 로컬 LAN이 아닌 알 수 없는 소스에서 오는 패킷을 삭제합니다.
  2. LAN2에서 WAN에 연결하려고 하면 패킷은 SRV-02를 통해 ISP 라우터로 라우팅되며 다음 두 가지 상황이 가능합니다.
    • 라우터는 패킷의 소스(LAN2)가 로컬 LAN이 아니기 때문에 패킷을 NAT 변환하지 않습니다(이것이 더 가능성 있는 상황입니다).
    • 라우터는 패킷을 NAT로 변환하여 인터넷으로 보냅니다. 그러나 응답이 오고 대상이 LAN2 주소로 다시 변환되면 ISP 라우터에 해당 네트워크에 대한 경로가 없기 때문에 패킷이 전달되지 않습니다. 패킷이 기본 게이트웨이(ISP)로 잘못 전송됩니다.

이러한 문제는 LAN2에 고정 경로를 ISP 라우터에 추가하고 SRV-01에서 LAN2에 대한 소스 NAT 구성을 추가하여 해결할 수 있습니다. 그러나 ISP 라우터에 대한 관리자 액세스 권한이 없기 때문에 불가능합니다.

이 문제를 해결하는 두 가지 솔루션이 있습니다.

A. SRV-01을 LAN1 및 LAN2 호스트를 위한 완전한 라우터로 만듭니다.

  • SRV-01에 다른 네트워크 어댑터 추가(총 3개)
  • 토폴로지를 다음과 같이 변경합니다.

.

WAN -> ISP router -> LAN1 -> SRV-01 +-> LAN3 (for hosts originally in LAN1)
                                    +-> LAN2 -> SRV-02

기본적으로 우리는 SRV-01을 두 LAN 세그먼트 모두에 대한 라우터로 만들고 있습니다.

  • 이를 위해서는 원래 LAN1에 있던 호스트를 새로운 서브넷 LAN3으로 이동해야 합니다.10.0.1.0/24
  • SRV-01의 네트워크 구성을 다음과 같이 변경해야 합니다.

/etc/네트워크/인터페이스:

# LAN1 - to ISP router
auto eth0
iface eth0 inet dhcp
# we can even use dhcp as the IP address is not really important
# - there are no more hosts on LAN1 apart from ISP router and SRV-01

# LAN3 - for hosts originally in LAN1
iface eth1
    address 10.0.1.1
    netmask 255.255.255.0

# LAN2
iface eth2
    address 10.0.2.1
    netmask 255.255.255.0

WAN 액세스를 작동시키기 위한 iptables 규칙:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE

또는 eth0의 SRV-01에 고정 IP 주소를 유지하기로 선택한 경우 규칙이 변경될 수 있습니다( MASQUERADE여전히 작동하지만).

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.5.8
  • DHCP는 eth1(LAN3, 원래 LAN1에 있는 호스트의 경우)의 SRV-01에서 구성해야 하며, 필요한 경우 eth2(LAN2)에서도 가능합니다. (두 경우 모두 게이트웨이는 각각 eth1 또는 eth2의 로컬 주소가 되지만 이는 말할 필요도 없습니다.)

이렇게 하면 LAN3과 LAN2(둘 모두의 기본 게이트웨이인 SRV-01을 통해) 간의 통신이 가능해집니다. 이중 소스 NAT 덕분에 LAN3과 LAN2 모두에서 WAN 액세스가 가능합니다.

B. SRV-01을 LAN1용 DHCP 서버로 만듭니다.

이 접근 방식은 위와 같이 깨끗하지는 않지만 약간 더 간단합니다. ISP 라우터에서 DHCP를 비활성화할 수 있다고 가정합니다.

  • ISP 라우터에서 DHCP 비활성화
  • SRV-01에서 LAN1에 대한 DHCP를 설정하고 SRV-01(192.168.5.8)을 LAN1의 기본 게이트웨이로 설정합니다.
  • LAN2에서 WAN 액세스가 작동하도록 SRV-01에서 LAN2에 대한 소스 NAT 변환을 설정합니다.

.

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -d 192.168.5.4 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 ! -d 192.168.5.0/24 -j SNAT --to-source 192.168.5.8

첫 번째 줄은 LAN2 호스트가 ISP 라우터 자체에 액세스할 수 있도록 SNAT를 활성화하고 두 번째 줄은 LAN2-LAN1 액세스에 대해 SNAT를 비활성화합니다.

다시 말하지만, 동일한 서브넷(SRV-01, ISP 라우터)에 두 개의 라우터가 있기 때문에 이 접근 방식은 위의 접근 방식만큼 깨끗하지 않습니다. 이 접근 방식을 직접 사용했을 때 두 번째 라우터(이 시나리오에서는 SRV-01)가 클라이언트(LAN1의 호스트)와 업스트림 라우터(ISP 라우터)가 네트워크에 있는 것을 확인하면서 ISP 라우터에 ICMP 리디렉션을 보내는 것을 확인했습니다. 같은 LAN. SRV-01에 구현된 네트워크 정책이 우회될 수 있으므로 이는 바람직하지 않을 수 있습니다.

도움이 되었기를 바랍니다.

관련 정보