pfSense 인프라 네트워크 구성 설치 및 초기 기본 설정
pfSense
를 설치하고 설정할 때, 웹 기반 사용자 인터페이스(WebUI)에 접근하기 위해 특정 초기 설정이 필요할 수 있습니다.
초기 구성 후 필요한 설정
- 웹 인터페이스 접근: 위의 두 명령어를 실행한 후, 웹 브라우저를 통해
pfSense
웹 인터페이스에 접근해야 합니다. 일반적으로http://<pfSense-IP-주소>
주소를 사용하여 접속합니다. - 네트워크 인터페이스 설정: 웹 인터페이스를 통해 네트워크 인터페이스 설정을 확인하고 필요에 따라 조정합니다. 이는 WAN, LAN 등의 인터페이스에 IP 주소를 할당하고, 필요한 경우 다른 네트워크 매개변수를 설정하는 과정을 포함합니다.
- 방화벽 규칙 구성: 초기에 비활성화했던 패킷 필터링을 다시 활성화하기 전에, 올바른 방화벽 규칙을 설정해야 합니다. 이는 외부로부터의 원하지 않는 접근을 차단하고, 내부 네트워크에서 필요한 트래픽만 허용하는 데 중요합니다.
- 시스템 및 패키지 업데이트: 최신 보안 패치와 시스템 업데이트를 적용하여
pfSense
시스템을 최신 상태로 유지하는 것이 중요합니다. - 백업 및 복구 계획 수립: 설정을 변경한 후, 이러한 설정을 백업해두는 것이 좋습니다. 장애 발생 시 신속하게 복구할 수 있도록 백업 계획을 마련하고 정기적으로 백업을 수행합니다.
위의 설정으로 초기 접근성 문제를 해결하고, 이후에는 보다 안정적이고 보안적인 환경을 위해 설정을 세밀하게 조정해야 합니다.
pfSense
에서 pfctl
명령어를 사용하여 방화벽을 제어하고, WebUI 접근을 위한 방화벽 룰셋을 관리하는 방법에 대해 설명하겠습니다. pfctl
은 FreeBSD 및 pfSense에서 패킷 필터(PF)를 관리하는 도구입니다.
방화벽 실행 및 중지
- 방화벽 실행(활성화)
pfSense
에서pfctl
을 사용하여 방화벽을 활성화하려면, 다음 명령어를 사용합니다.pfctl -e
- 이 명령은 패킷 필터를 활성화하여 모든 트래픽이 설정된 규칙에 따라 필터링되도록 합니다.
- 방화벽 중지(비활성화)
- 방화벽을 일시적으로 비활성화하려면, 다음 명령어를 사용합니다.
pfctl -d
- 이 명령은 패킷 필터를 비활성화하여 모든 네트워크 트래픽이 규칙 없이 자유롭게 통과하도록 합니다.
- 방화벽을 일시적으로 비활성화하려면, 다음 명령어를 사용합니다.
WebUI 접근을 위한 방화벽 룰셋 추가 및 확인
- 방화벽 규칙 추가
- WebUI에 접근하기 위해 필요한 방화벽 규칙을 추가하는 일반적인 방법은 웹 인터페이스를 사용하는 것입니다. 그러나 명령줄을 사용해야 할 때는 직접
pf.conf
파일을 편집하거나pfSsh.php
스크립트를 사용할 수 있습니다. - 특정 IP 주소에서 WebUI에 접근할 수 있도록 허용하는 규칙을 추가
pass in on <interface> proto tcp from <source-ip> to <pfsense-ip> port 80
- 규칙을
/etc/pf.conf
파일에 추가하고, 파일을 저장한 후, 변경 사항을 적용하기 위해 다음 명령을 실행pfctl -f /etc/pf.conf
- WebUI에 접근하기 위해 필요한 방화벽 규칙을 추가하는 일반적인 방법은 웹 인터페이스를 사용하는 것입니다. 그러나 명령줄을 사용해야 할 때는 직접
- 방화벽 규칙 확인
- 현재 활성화된 방화벽 규칙을 확인하려면 다음 명령어를 사용합니다.
pfctl -sr
- 이 명령은 현재 로드된 모든 규칙을 나열합니다. WebUI 접근 규칙이 제대로 추가되었는지 확인할 수 있습니다.
- 현재 활성화된 방화벽 규칙을 확인하려면 다음 명령어를 사용합니다.
- pfSsh.php playback disablereferercheck
- 이 명령어는
pfSense
의 웹 서버 설정에서 HTTP 리퍼러 검사를 비활성화합니다. 웹 브라우저에서 웹 서버로 요청을 보낼 때, HTTP 리퍼러(Referer) 헤더는 이전에 방문한 웹 페이지의 주소를 전달합니다.pfSense
에서는 이 정보를 보안 목적으로 사용하여 요청이 신뢰할 수 있는 소스에서 발생했는지를 확인합니다. 초기 설정에서 이 기능을 비활성화하면, 다양한 네트워크 환경에서 웹 인터페이스에 보다 쉽게 접근할 수 있게 됩니다.
- 이 명령어는
이러한 명령어와 절차를 통해 pfSense
에서 방화벽을 제어하고 필요한 규칙을 추가하여 WebUI 접근을 보장할 수 있습니다. pfSense
설정을 조정할 때는 네트워크 보안과 안정성을 항상 고려하는 것이 중요합니다.
pfSense
에서 SSH 서비스를 활성화하고, 새 계정을 생성하며, 그 계정을 통해 SSH 키 접근을 설정하는 방법을 단계별로 설명하겠습니다.
1. SSH 서비스 활성화
pfSense
에서 SSH 접근을 활성화합니다.
- WebUI에 로그인: 먼저,
pfSense
의 관리 웹 인터페이스에 로그인합니다. - Advanced Features로 이동: "System" 메뉴를 클릭하고 "Advanced"를 선택합니다.
- Secure Shell 접근 활성화: "Admin Access" 탭에서 "Secure Shell" 섹션을 찾아 "Enable Secure Shell" 체크박스를 선택합니다.
- 변경 사항 저장: 설정을 저장하고 적용합니다.
이제 pfSense
시스템에 SSH를 통한 접근이 가능해집니다.
2. 계정 생성
새 사용자 계정을 추가합니다.
- User Manager로 이동: "System" 메뉴에서 "User Manager"를 선택합니다.
- 새 사용자 추가: "Users" 탭에서 "Add" 버튼을 클릭합니다.
- 사용자 정보 입력: 사용자 이름, 비밀번호 등 필요한 정보를 입력합니다. 필요에 따라 해당 사용자에게 관리자 권한을 부여할 수 있습니다.
- 변경 사항 저장: "Save" 버튼을 클릭하여 새 사용자를 추가합니다.
3. SSH 키 접근 설정
생성한 계정으로 SSH 키를 사용하여 접근하도록 설정합니다.
- SSH 키 생성: 사용자의 클라이언트 시스템에서 SSH 키를 생성합니다. 일반적으로
ssh-keygen
명령을 사용합니다. 예를 들면:이 명령은 RSA 키를 생성하고, 기본적으로~/.ssh/id_rsa
(비공개 키)와~/.ssh/id_rsa.pub
(공개 키)에 저장합니다.ssh-keygen -t rsa -b 2048
- 공개 키를
pfSense
에 추가- 다시 "User Manager"로 이동합니다.
- 해당 사용자의 설정을 편집하려면 사용자 이름 옆의 펜 아이콘을 클릭합니다.
- "Keys" 탭으로 이동하여 사용자의 SSH 공개 키를 "Authorized Keys" 필드에 붙여넣습니다.
- 변경 사항을 저장합니다.
이제 해당 사용자는 설정된 공개 키를 사용하여 pfSense
시스템에 비밀번호 없이 SSH 접근할 수 있습니다. SSH 키 기반 인증은 비밀번호 기반 인증보다 훨씬 안전하며, 자동화된 스크립트나 관리 작업에 적합합니다. 이 과정을 통해 사용자 계정의 보안을 강화하고 편리하게 원격 관리를 수행할 수 있습니다.
pfSense
에서 사용자 계정을 wheel
그룹에 추가하여 해당 계정이 su
(superuser 또는 substitute user) 명령을 사용할 수 있도록 설정하는 방법을 설명하겠습니다. wheel
그룹에 속한 사용자만이 su
를 사용하여 루트 권한을 획득할 수 있습니다.
사용자를 wheel 그룹에 추가하는 단계
- WebUI에 로그인: 먼저,
pfSense
의 관리 웹 인터페이스에 로그인합니다. - User Manager로 이동: 상단 메뉴에서 "System"을 선택한 다음 "User Manager"를 클릭합니다.
- 사용자 편집: 수정하려는 사용자 옆의 펜 아이콘을 클릭하여 해당 사용자의 설정을 편집합니다.
- 사용자 속성 설정
- 사용자의 설정 페이지에서, "Effective Privileges" 섹션을 찾습니다.
- "Groups" 탭을 클릭하고, 사용자를 추가할 그룹을 찾습니다. 여기에서
wheel
그룹을 찾아 체크합니다.
- 변경 사항 저장: 설정을 마친 후, 하단의 "Save" 버튼을 클릭하여 변경 사항을 저장합니다.
이제 해당 사용자는 wheel
그룹의 멤버가 되어 su
명령을 사용할 수 있습니다. 사용자가 SSH를 통해 pfSense
시스템에 접속한 후, su -
명령을 사용하여 루트 사용자로 전환할 수 있습니다. 루트 비밀번호를 정확히 입력하면, 사용자는 루트 사용자의 권한을 얻게 됩니다.
pfSense
에서는 보안을 위해 가능한 한 su
대신 sudo
를 사용하는 것이 좋습니다. sudo
를 사용하면 루트 권한이 필요한 명령을 사용자의 비밀번호만으로 실행할 수 있으며, 시스템 로그에 해당 명령이 기록되어 감사 및 모니터링이 용이합니다. 필요한 경우, sudo
패키지를 pfSense
에 설치하고, sudoers
파일을 편집하여 구체적인 권한을 부여할 수 있습니다.
pfSense
에서 WireGuard VPN을 구성하고, 리눅스 클라이언트를 추가하여 WireGuard를 통해 연결하는 전체 과정을 단계별로 설명하겠습니다. 이를 통해 안전하게 네트워크에 접속할 수 있습니다.
Step 1: WireGuard 설치 및 활성화
- pfSense 패키지 관리자를 통한 WireGuard 설치
pfSense
의 관리 웹 인터페이스에 로그인합니다.- 상단 메뉴에서 "System"을 클릭한 다음 "Package Manager"를 선택합니다.
- "Available Packages" 탭을 클릭하고, "WireGuard"를 검색하여 설치합니다.
- WireGuard 활성화 및 기본 설정
- 설치가 완료되면, "VPN" 메뉴에서 "WireGuard"를 선택하여 WireGuard 설정 페이지로 이동합니다.
- "WireGuard Tunnel" 탭에서 "Add Tunnel"을 클릭하여 새 터널을 생성합니다.
- 터널의 이름과 설명을 입력하고, 기본적인 네트워크 설정(리스닝 포트, 주소 등)을 구성합니다.
- 생성한 터널을 활성화하고 저장합니다.
Step 2: 클라이언트 구성
- WireGuard 클라이언트 추가
- "WireGuard" 설정 페이지에서 "Peers" 탭으로 이동하여 "Add Peer"를 클릭합니다.
- 필요한 정보(클라이언트 이름, 퍼블릭 키, 프리셰어드 키 등)를 입력합니다. 이 정보는 리눅스 클라이언트에서 생성한 키 정보와 일치해야 합니다.
- 클라이언트의 IP 주소 범위를 지정하고, 필요한 경우 추가 설정(Allowed IPs, Endpoint 등)을 구성합니다.
- 클라이언트 설정을 저장합니다.
- 클라이언트에서 WireGuard 키 생성
- 리눅스 클라이언트에서 다음 명령어를 사용하여 공개키 및 비공개키를 생성합니다.
wg genkey | tee privatekey | wg pubkey > publickey
- 생성된 키는
pfSense
설정에 사용됩니다.
- 리눅스 클라이언트에서 다음 명령어를 사용하여 공개키 및 비공개키를 생성합니다.
Step 3: 리눅스 클라이언트에서 WireGuard 설정
- 클라이언트 설정 파일 생성
- 리눅스 시스템에서
/etc/wireguard/wg0.conf
파일을 생성합니다.sudo nano /etc/wireguard/wg0.conf
- 다음과 같은 형식으로 설정을 입력합니다.
[Interface] Address = <Client-IP>/32 PrivateKey = <Client-PrivateKey> DNS = <DNS-IP> [Peer] PublicKey = <Server-PublicKey> Endpoint = <pfSense-IP>:<Port> AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
- 리눅스 시스템에서
- WireGuard 서비스 시작
- 설정이 완료되면 다음 명령어로 WireGuard 인터페이스를 활성화하고 시작합니다.
sudo wg-quick up wg0
- 설정이 완료되면 다음 명령어로 WireGuard 인터페이스를 활성화하고 시작합니다.
- 연결 상태 확인
- 연결이 성공적으로 설정되었는지 확인하기 위해 다음 명령어를 실행합니다.
sudo wg
- 연결이 성공적으로 설정되었는지 확인하기 위해 다음 명령어를 실행합니다.
위 단계를 통해 pfSense
에 WireGuard VPN을 성공적으로 설정하고, 리눅스 클라이언트를 추가하여 VPN을 통한 안전한 연결을 구성할 수 있습니다. 설정 과정에서 클라이언트와 서버 간의 키 정보가 정확히 일치하는지 확인하는 것이 중요합니다.
리눅스 클라이언트에서 WireGuard를 설치하는 방법은 사용 중인 배포판에 따라 다를 수 있습니다. 여기서는 가장 일반적인 몇 가지 리눅스 배포판에 대해 설명하겠습니다.
Debian/Ubuntu 기반 시스템
- 리포지터리 업데이트 및 필요한 패키지 설치
sudo apt update sudo apt install wireguard
Fedora
- WireGuard 패키지 설치
sudo dnf install wireguard-tools
CentOS/RHEL
- EPEL 리포지터리 활성화
sudo yum install epel-release
- WireGuard 패키지 설치
sudo yum install wireguard-tools
Arch Linux
- WireGuard 패키지 설치
sudo pacman -S wireguard-tools
일반적인 설치 후 작업
- 키 생성: 설치 후, 리눅스 클라이언트에서 필요한 개인 키와 공개 키를 생성합니다.이 명령은 개인 키를
privatekey
파일에, 공개 키를publickey
파일에 저장합니다.wg genkey | tee privatekey | wg pubkey > publickey
- 구성 파일 생성: WireGuard 인터페이스에 대한 설정 파일을 생성합니다. 일반적으로 이 파일은
/etc/wireguard/
디렉토리 안에 위치합니다. 예를 들어,wg0
이라는 인터페이스의 설정 파일은 다음과 같은 내용을 포함할 수 있습니다.
이 파일에서는 서버의 공개 키, 서버의 IP 주소 및 포트, 그리고 트래픽 라우팅 규칙 등을 설정해야 합니다.[Interface] Address = 10.0.0.2/24 PrivateKey = <Client-PrivateKey> [Peer] PublicKey = <Server-PublicKey> Endpoint = <Server-IP-Address>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
- WireGuard 인터페이스 시작: 구성 파일이 준비되면 다음 명령을 사용하여 WireGuard 인터페이스를 활성화하고 시작합니다.
sudo wg-quick up wg0
- 자동 시작 활성화: 시스템 부팅 시 WireGuard가 자동으로 시작되도록 하려면 다음 명령을 사용합니다.
sudo systemctl enable wg-quick@wg0
이제 리눅스 클라이언트가 WireGuard를 사용하여 VPN 연결을 시작할 준비가 되었습니다. WireGuard의 간결하고 간편한 설정은 많은 사용자들에게 매력적인 VPN 솔루션으로 자리 잡게 하고 있습니다.
사용자 권한으로 홈 디렉토리에 WireGuard 구성 파일을 생성하고 관리할 수 있습니다. 일반적으로 /etc/wireguard/
에 구성 파일을 저장하는 것이 표준이지만, 보안 또는 권한에 관한 이유로 사용자 자신의 홈 디렉토리에서 개인 WireGuard 설정을 관리할 수도 있습니다.
사용자 홈 디렉토리에서 WireGuard 설정
- 홈 디렉토리에 구성 디렉토리 생성
mkdir ~/wireguard cd ~/wireguard
- 키 생성이 명령은 개인 키와 공개 키를 현재 디렉토리에 생성합니다.
wg genkey | tee privatekey | wg pubkey > publickey
- 구성 파일 생성
이 파일에서 필요한 설정을 입력합니다. 예를 들어:nano wg0.conf
PrivateKey = <내용 복사>
부분에는 이전에 생성한privatekey
파일의 내용을 복사하여 붙여넣습니다.[Interface] Address = 10.0.0.2/24 PrivateKey = <내용 복사> ListenPort = 51820 DNS = 8.8.8.8 [Peer] PublicKey = <서버의 공개키> Endpoint = <서버의 IP 주소와 포트> AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
- WireGuard 인터페이스 시작
이 명령은 사용자의 홈 디렉토리에서 구성 파일을 사용하여 WireGuard 인터페이스를 활성화합니다.wg-quick up ~/wireguard/wg0.conf
sudo
권한이 필요할 수 있습니다. - WireGuard 인터페이스 중지
wg-quick down ~/wireguard/wg0.conf
주의 사항
wg-quick
명령을 실행할 때는 대부분의 배포판에서sudo
권한이 필요합니다. 이는 네트워크 인터페이스를 조작하는 작업이 일반 사용자 권한보다 높은 권한을 요구하기 때문입니다.- 구성 파일에 사용한 키와 IP 설정은 실제 네트워크 설정과 VPN 요구 사항에 맞게 조정해야 합니다.
- 이 방식은 개인 사용자가 자신의 VPN 연결을 관리할 때 유용하며, 시스템 전체 설정에 영향을 주지 않고 개인적인 환경을 구성할 수 있습니다.
이렇게 하면, 시스템의 중요한 설정 파일을 건드리지 않고도 개인적인 범위 내에서 WireGuard VPN을 설정하고 사용할 수 있습니다.
sudoers.d
디렉토리는 관리자가 sudo
설정을 조정하기 위해 개별 파일로 관리할 수 있게 하는 기능을 제공합니다. 이를 통해 sudoers
파일 자체를 수정하지 않고도 추가 설정을 관리할 수 있습니다. 여기서는 sudoers.d
폴더에 파일을 추가하여 특정 사용자에게 sudo
권한을 부여하는 방법을 설명하겠습니다.
sudoers.d 내 파일 작성 방법
- 파일 생성
/etc/sudoers.d
디렉토리에 새 파일을 만듭니다. 일반적으로 파일 이름은 명확하게 사용자나 그룹의 이름을 포함하는 것이 좋습니다. 예를 들어, 사용자alice
에게sudo
권한을 부여하고자 한다면,alice
라는 이름의 파일을 생성합니다.sudo visudo -f /etc/sudoers.d/alice
visudo
명령을 사용하는 이유는visudo
가 문법 오류를 검사하여sudo
설정 파일에 문제가 생기지 않도록 보호해주기 때문입니다.
- 파일 내용 작성
- 다음은
alice
사용자에게 모든 명령에 대한sudo
권한을 부여하는 예시입니다.
이 설정은alice ALL=(ALL) NOPASSWD: ALL
alice
사용자가 패스워드 입력 없이 모든 호스트에서 모든 명령을sudo
로 실행할 수 있게 합니다. 또 다른 예로, 특정 명령만을 실행할 수 있게 제한하고 싶다면 다음과 같이 작성할 수 있습니다.
이 설정은alice ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade
alice
사용자가sudo
로apt update
와apt upgrade
명령만 패스워드 없이 실행할 수 있게 합니다.
- 다음은
- 파일 저장 및 종료
visudo
를 사용했다면, 문법에 오류가 없는 경우 자동으로 저장하고 종료됩니다. 문법에 오류가 있다면, 오류를 수정하라는 메시지가 표시됩니다.
- 설정 테스트
- 설정이 제대로 적용되었는지 확인하기 위해 해당 사용자로 로그인하거나
su
명령을 사용하여 해당 사용자로 전환한 후,sudo
명령을 실행하여 테스트합니다.
- 설정이 제대로 적용되었는지 확인하기 위해 해당 사용자로 로그인하거나
주의사항
sudo
설정 파일에서는 문법 오류가 있으면 큰 문제를 일으킬 수 있습니다. 항상visudo
를 사용하여 파일을 편집하세요.- 보안을 위해 꼭 필요한 경우에만
NOPASSWD
옵션을 사용하고, 가능한 한 명령 실행 범위를 제한하세요. /etc/sudoers.d
디렉토리 내 파일의 권한은 반드시0440
이어야 합니다.
이러한 방법으로 /etc/sudoers.d
디렉토리에 파일을 추가하고 관리하면, sudo
권한 설정을 더 안전하고 유연하게 관리할 수 있습니다. 그리고, 추가적으로 확인해야 할 부분입니다.
1. 파일 권한 수정
우선, wg0.conf
파일의 권한이 너무 개방적으로 설정되어 있다면 보안상 문제가 될 수 있습니다. 이 파일은 개인 키를 포함할 수 있으므로, 다른 사용자가 접근할 수 없도록 권한을 제한해야 합니다.
chmod 600 ~/wireguard/wg0.conf
이 명령은 파일을 소유자만 읽고 쓸 수 있도록 설정합니다.
2. sudo 권한 확인
sudo
권한 문제로 인해 네트워크 인터페이스를 추가하거나 제거하는 데 필요한 권한이 없을 수 있습니다. wg-quick
스크립트는 sudo
를 사용하여 실행되어야 하며, 해당 사용자가 충분한 권한을 가지고 있는지 확인해야 합니다. 이러한 문제를 해결하기 위해, 다음을 시도할 수 있습니다.
sudo
권한이 충분한지 확인: 현재 사용자가sudoers
파일 또는/etc/sudoers.d
내의 설정에서 적절한 권한을 부여받았는지 확인합니다.- 명령어 직접 실행: 명령어를
sudo
로 직접 실행하여 특정 작업에 대한 권한이 제대로 작동하는지 테스트해 볼 수 있습니다.
이 명령들을 실행하여 실제로sudo ip link add wg0 type wireguard sudo ip link delete wg0
ip
명령에 대한 권한이 있는지 확인합니다.
3. ip 명령어 확인
ip
명령은 네트워크 인터페이스를 관리하는 데 필요하며, wg-quick
스크립트가 이를 사용합니다.
- 대부분의 리눅스 배포판에서
ip
명령은iproute2
패키지에 포함되어 있습니다. 해당 패키지를 설치하거나 확인합니다.- Debian/Ubuntu
sudo apt-get install iproute2
- CentOS/RHEL
sudo yum install iproute
- Fedora
sudo dnf install iproute
- Debian/Ubuntu
4. 인터페이스 접근 권한
wg-quick
스크립트가 네트워크 인터페이스를 생성하거나 삭제하는 데 필요한 권한이 부여되어야 합니다. 일반적으로 sudo
를 사용하지 않거나, sudo
설정에 문제가 있을 때 발생합니다.
- 명령을
sudo
와 함께 실행하고 있는지 확인합니다. 이미sudo
를 사용하고 있다면,sudoers
설정을 확인하여 사용자가 필요한 권한을 가지고 있는지 확인합니다.
5. WireGuard 모듈 확인
커널 모듈이 제대로 로드되지 않았을 때, RTNETLINK answers: Operation not permitted
같은 오류가 발생할 수 있습니다. 시스템에 WireGuard
모듈이 제대로 설치되어 있고 활성화되어 있는지 확인합니다.
sudo modprobe wireguard
이 명령은 WireGuard
커널 모듈을 로드하려 시도합니다. 모듈이 없거나 문제가 있다면, 오류 메시지를 통해 알 수 있습니다.
6. 시스템 로그 검토
위 유형들 외에 해결되지 않는 문제가 있을 경우, 시스템 로그를 검토하여 추가적인 정보를 얻을 수 있습니다. 로그는 보통 dmesg
또는 /var/log/syslog
에서 확인할 수 있습니다.
dmesg | grep wireguard
이 명령은 최근 커널 메시지 중 WireGuard
와 관련된 로그를 필터링하여 보여줍니다.
마지막으로, net.ipv4.conf.all.src_valid_mark
설정은 주로 VPN 구성에서 사용되며, 특히 IP 패킷의 소스 유효성 검사를 무시하도록 시스템을 구성하는 데 사용됩니다. 이는 VPN 터널을 통해 라우팅되는 트래픽이 원래 IP 주소에 바인딩되지 않도록 하여, 복잡한 라우팅 시나리오에서 유용합니다. 예를 들어, 이는 특정 VPN 구현에서 발생할 수 있는 패킷 리턴 경로 문제를 해결하는 데 도움이 됩니다.
src_valid_mark 설정의 사용 예
- VPN Split Tunneling: VPN을 사용할 때 일부 트래픽만 VPN을 통해 라우팅하고 다른 트래픽은 기본 인터넷 연결을 통해 라우팅하는 설정에서 유용합니다. 이 설정을 활성화하면, VPN 터널을 통해 라우팅되는 패킷이 원래 IP 검사를 통과하지 않아도 됩니다.
- Multiple VPN Connections: 동시에 여러 VPN 연결을 관리할 때, 특정 VPN 인터페이스를 통해 들어오는 패킷이 시스템의 다른 부분에 의해 거부되지 않도록 하기 위해 사용될 수 있습니다.
설정 제거 방법
net.ipv4.conf.all.src_valid_mark
설정이 필요하지 않다고 판단되는 경우, 이를 사용하지 않도록 VPN 설정을 조정해야 합니다. 이 설정은 특히 WireGuard
와 같은 최신 VPN 도구에서 필요로 할 수 있지만, 필수는 아닙니다.
- VPN 설정 파일 수정: VPN의 설정 파일에서 이 sysctl 설정을 참조하거나 필요로 하는 부분을 수정합니다. 예를 들어,
wg-quick
스크립트에서PostUp
및PreDown
커맨드를 수정하여 이 옵션을 설정하거나 해제하는 부분을 제거할 수 있습니다.wg0.conf
파일에서 다음 라인을 제거하거나 주석 처리합니다.PostUp = sysctl -w net.ipv4.conf.all.src_valid_mark=1 PreDown = sysctl -w net.ipv4.conf.all.src_valid_mark=0
- 시스템 재부팅: 변경 사항을 적용하기 위해 시스템을 재부팅합니다. 이는 모든 네트워크 설정을 초기 상태로 재설정하고, 어떠한 임시 변경도 제거합니다.
- 네트워크 동작 확인: 설정을 제거한 후 네트워크가 정상적으로 동작하는지 확인합니다. VPN을 통한 연결 및 기타 네트워크 기능이 정상적으로 작동하는지 테스트합니다.
- 대체 설정 고려:
src_valid_mark
없이도 동일한 네트워크 기능을 수행할 수 있는 다른 설정이나 방법이 있는지 검토합니다. VPN 설정에 따라 다른 방식의 라우팅 규칙을 적용할 수 있습니다.
sysctl
설정을 제거하는 것은 시스템의 기본 동작을 변경할 수 있으므로, 변경 전에 네트워크 요구 사항과 VPN 설정의 필요성을 잘 이해하고 있어야 합니다. 설정을 제거하기 전에는 왜 이 설정이 적용되었는지, 그리고 그 설정이 제거되었을 때 발생할 수 있는 영향을 충분히 고려해야 합니다.