-
[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 - 두 개의 사설망