본문 바로가기

스크립트

CentOS 7 DSR 설정 스크립트

반응형

CentOS 7 DSR 설정 스크립트

사전 조건

1. NetworkManager 비활성화

### NetworkManager 서비스 비활성화
systemctl disable NetworkManager
systemctl stop NetworkManager

### network 서비스 활성화
systemctl enable network
systemctl start network

2. /etc/sysconfig/network-scripts/ 디렉토리와 ifup 명령이 존재해야 합니다.

스크립트

1. 스크립트 작성

vim setup_dsr_loopback.sh
#!/bin/bash

echo -n "DSR kernel parameter를 적용하시겠습니까? (y/n): "
read apply_dsr
if [[ "$apply_dsr" =~ ^[Yy]$ ]]; then
  echo "[+] sysctl DSR 설정 적용 중..."

  # 중복 추가 방지
  if ! grep -q "net.ipv4.conf.lo.arp_ignore" /etc/sysctl.conf; then
    cat <<EOF >> /etc/sysctl.conf

# DSR 설정
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
EOF
  else
    echo "[!] /etc/sysctl.conf에 이미 설정이 존재합니다. 생략합니다."
  fi

  /sbin/sysctl -p
  echo "[+] DSR 커널 파라미터가 적용되었습니다."
else
  echo "[*] DSR 커널 파라미터 적용을 건너뜁니다."
fi

echo -e "\n[+] 현재 Loopback 인터페이스 상태:"
echo "======================================================"
ip addr show lo | grep -E "inet|lo:"
echo "======================================================"

# 루프백 인터페이스 설정
read -p "DSR Loop 번호를 입력하세요 (예: 0, 1 등): " dsr_loop_num
read -p "할당할 VIP 주소를 입력하세요 (예: 192.168.0.100): " dsr_ip_address

# IP 형식 유효성 검사
if ! [[ $dsr_ip_address =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
  echo "[!] 유효하지 않은 IP 주소 형식입니다."
  exit 1
fi

cfg_file="/etc/sysconfig/network-scripts/ifcfg-lo:$dsr_loop_num"

cat <<EOF > "$cfg_file"
DEVICE=lo:$dsr_loop_num
IPADDR=$dsr_ip_address
NETMASK=255.255.255.255
ONBOOT=yes
NAME=lo:$dsr_loop_num
EOF

echo "[+] $cfg_file 파일이 생성되었습니다."

# 루프백 인터페이스 활성화
if command -v ifup &>/dev/null; then
  ifup lo:$dsr_loop_num && echo "[+] lo:$dsr_loop_num 인터페이스가 활성화되었습니다."
else
  echo "[!] ifup 명령어를 찾을 수 없습니다."
  exit 1
fi

# 결과 출력
echo -e "\n[+] Loopback 인터페이스 상태 확인:"
echo "======================================================"
ip addr show lo | grep -C 1 "inet $dsr_ip_address"
echo "======================================================"
더보기

---

#!/bin/bash

echo -n "DSR kernel parameter를 적용하시겠습니까? (y/n): "
read apply_dsr
if [ "$apply_dsr" = "y" ]; then
  cat <<EOF >> /etc/sysctl.conf
# DSR
# Packet Forwarding 기능 (0: disable, 1: enable)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
EOF
  /sbin/sysctl -p
  echo "DSR kernel parameter가 적용되었습니다."
else
  echo "DSR kernel parameter 적용을 취소했습니다."
fi

echo "======================================================"
ifconfig | grep lo
echo "======================================================"
echo -e "\n"

echo -n "DSR Loop Num을 입력하세요: "
read dsr_loop_num
echo -n "IP 주소를 입력하세요: "
read dsr_ip_address

cat <<EOF >> /etc/sysconfig/network-scripts/ifcfg-lo:$dsr_loop_num
DEVICE=lo:$dsr_loop_num
IPADDR=$dsr_ip_address
NETMASK=255.255.255.255
ONBOOT=yes
EOF

ifup lo:$dsr_loop_num

echo -e "\n"
echo "======================================================"
ifconfig | grep -C 1 lo
echo "======================================================"

---

2. 실행 권한 부여

chmod +x setup_dsr_loopback.sh

3. 실행

bash setup_dsr_loopback.sh

 

참고URL

- 변군이글루 블로그(Byeon-gun's Igloo Blog) : CentOS 7에서 DSR 방식을 설정하는 방법(DSR Loopback)

 

반응형