본문 바로가기

운영체제/Unix & Linux

nftables를 사용하여 SNAT 구성

반응형

구성환경

Redhat 8.4

 

1. nftables 활성화

 > systemctl enable nftables.service

 > systemctl start nftables.service

 

2. nft ruleset 제거

 > nft flush ruleset

 

3. nftables 리스트

 > nft list ruleset

 

4. SNAT(외부 인터페이스(ens160) 의 IP(192.168.0.175)로  SNAT 처리)

 > nft add table nat

 > nft add chain nat WORKER_OUT { type nat hook postrouting priority 100 \; }

 > nft add rule nat WORKER_OUT  oifname "ens160" snat to 192.168.0.175

 

5. nfttables 확인

 > nft --handle list ruleset
table ip nat { # handle 8
           chain postrouting { # handle 1
                        type nat hook postrouting priority srcnat; policy accept;
                        oifname "ens160" snat to 192.168.0.175 # handle 4
          }
}

 

6.  nftables 스크립트 생성 및 수행

 6.1 /etc/nftables/worker_out.nft 스크립트 생성

#!/usr/sbin/nft -f
flush ruleset
add table nat
add chain nat WORKER_OUT  { type nat hook postrouting priority 100 ; }
add rule nat WORKER_OUT  oifname "ens160" snat to 192.168.0.175

 6.2  nftables 스크립트 실행 

> nft -f /etc/nftables/worker_out.nft

 

 6.3 부팅시 활성화

 공통) 커널 매개 변수 변경

 > vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

 > sysctl -p

 

 방법1) rc.local 

  > chmod +x /etc/rc.d/rc.local

  > vi /etc/rc.d/rc.local

 /usr/sbin/nft -f /etc/nftables/worker_out.nft

방법2) /etc/sysconfig/nftables.conf 파일에 아래 내용 추가

include "/etc/nftables/worker_out.nft" 

예)

# Uncomment the include statement here to load the default config sample
# in /etc/nftables for nftables service.

#include "/etc/nftables/main.nft"

# To customize, either edit the samples in /etc/nftables, append further
# commands to the end of this file or overwrite it after first service
# start by calling: 'nft list ruleset >/etc/sysconfig/nftables.conf'.
include "/etc/nftables/worker_out.nft"

 

반응형