ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CentOS 7] firewalld 설정을 통해 서버를 게이트웨이로 사용하기
    linux 2021. 9. 3. 00:47
    반응형

    일반 컴퓨터를 게이트웨이로 사용해야 할 경우가 있다. 사설망 내부에 또 다른 사설망을 만들어야 할 경우가 그렇다. 이 경우 한 서버에 두 개의 NIC(랜카드) 를 장착시키고 내부 사설망에서 게이트웨이 역할을 하도록 할 수 있다.

    이 때, CentOS 7 의 firewalld 설정을 이용하면 아주 간단하게 처리 할 수 있다.


    환경

    • 두 개의 사설망
      • 사설망1 는 192.168.1.0/24 의 서브넷
      • 사설망2 는 10.10.1.0/24 의 서브넷 (내부에 존재하며 직접적으로 인터넷과 연결되지 않음)
    • 서버1 (내부 사설망에서 게이트웨이 역할을 할 서버)
      • CentOS 7.9: firewalld 가 기본적으로 적용되어 있다.
      • 두 개의 NIC (랜카드): 임의로 eno1, enp3s0 라고 하자
    • 컴퓨터1 (내부 사설망에 존재하는 컴퓨터)

    최종 구성은 아래와 같다.

     

    사설망 구성

    컴퓨터1 에서 인터넷에 접근할 수 있도록 하는 것이 목표이다.


    1. ip 확인

    먼저 서버1 의 각 NIC 가 적절한 static ip 를 가지는지 확인해 보자. 

    [user@server1 ~]$ ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        (...)
    2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        (...)
        inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute eno1
           valid_lft forever preferred_lft forever
        (...)
    3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        (...)
        inet 10.10.1.1/24 brd 10.10.1.255 scope global noprefixroute enp3s0
           valid_lft forever preferred_lft forever
        (...)

     

     

    ip 가 다르다면 

    /etc/sysconfig/network-scripts/ifcfg-eno1
    /etc/sysconfig/network-scripts/ifcfg-enp3s0

    를 수정하고 네트워크를 재시작하여 설정한다.

    2. firewalld 확인

    현 시점의 firewalld 설정을 확인한다. 별도로 수정하지 않았다면 기본적으로 public zone 으로 되어 있다.

    [user@server1 ~]$ firewall-cmd --get-active-zone
    public
      interfaces: eno1 enp3s0

    3. firewalld 수정

    이 때, 핵심은 서버1 기준으로 사설망2 에서 사설망1로 전달될 때, 마스커레이드(masquerading) 되도록 하는 것이다. firewalld 가 제공하는 zone 중 external 이 이러한 설정을 기본적으로 가지고 있다.

     

    따라서 사설망1 쪽을 external 로 설정한다.

    [user@server1 ~]$ sudo firewall-cmd --permanent --zone=external --change-interface=eno1
    The interface is under control of NetworkManager, setting zone to 'external'.
    success

    원래 firewall-cmd 의 --permanent 옵션은 영구적으로 적용하지만 재시작해야 적용되는데, 인터페이스에 대한 것은 바로 적용되는 것 같다. 재시작이 필요없다.

     

    잘 적용되었는지 확인해 보자.

    [user@server1 ~]$ firewall-cmd --get-active-zone
    external
      interfaces: eno1
    public
      interfaces: enp3s0

    끝났다. 이제 게이트웨이로 동작한다.

    4. 내부 사설망(사설망2) 에서 확인

    컴퓨터1 에서 잘 동작하는지 확인해 보자. 이 때, 컴퓨터1은 게이트웨이로 서버1(10.10.1.1) 을 설정 해야 한다.

    [user@computer1 ~]$ curl https://www.example.com
    <!doctype html>
    <html>
    <head>
        (...)

    잘 호출하고 있다.

    반응형

    'linux' 카테고리의 다른 글

    certbot 으로 let's encrypt 인증서 발급받기  (1) 2022.01.30
    openssl 로 self-signed certificate 만들기  (0) 2021.09.10

    댓글

Designed by Tistory.