이 아이노드는 파일이 실제로 어디에 저장되어 있는지, 파일의 크기, 수정 시간 등 파일에 관한 다양한 정보를 관리합니다.
아이노드는 무엇을 관리할까요?
아이노드는 파일에 대한 중요한 정보를 포함하고 있습니다.
이 정보는 다음과 같습니다:
파일 소유권과 접근 권한: 이 파일을누가 소유하고, 어떤권한을 가지고 있는지.
파일 내용이 저장된 물리적 주소: 파일의데이터가 실제로 어디에 위치하는지.
파일의 링크 수: 파일을참조하는 링크가 몇 개 있는지.
파일의 크기: 파일이 차지하는크기.
파일 생성 시간, 최근 사용 시간, 최근 수정 시간: 파일이 언제 만들어졌고, 언제 마지막으로 사용되었는지, 수정되었는지에 대한 정보.
아이노드의 최근 수정 시간: 아이노드 자체가수정된 시간.
이 정보들은 파일 시스템에서 파일이 어떻게 저장되고 관리되는지에 대한 중요한 정보를 제공합니다.
아이노드는 어떻게 구성될까요?
아이노드는 64바이트 크기의 표로, 파일에 대한 모든 정보를 담고 있습니다.
그리고 이 아이노드들은 아이노드 블록에 저장되며, 전체 디스크의 약 1% 정도를 차지합니다.
파일이나 디렉토리가 생성되면, 해당 파일을 관리할 아이노드가 만들어지고, 이 아이노드는 아이노드 테이블에 등록되어 관리됩니다.
- 아이노드(inode): 파일이나 디렉토리의 중요한 정보를 담고 있는 64바이트 크기의 데이터 구조입니다. - 아이노드 테이블(inode table): 시스템 내의 모든 파일과 디렉토리의 아이노드를 관리하는 표입니다. - 아이노드 번호(inumber): 아이노드가 아이노드 테이블에서 고유하게 등록된 번호입니다.
아이노드 테이블의 역할
아이노드 테이블은 파일 시스템에서 파일이나 디렉토리들이 어디에 저장되고 있는지 추적하는 역할을 합니다. 파일이나 디렉토리가 생성되면, 아이노드 번호는 i-list라는 표에 등록되고, 이 번호를 통해 해당 파일에 대한 정보를 빠르게 찾을 수 있습니다.
이번 시간에는 아이노드에 대해 살펴보았습니다.
다음 시간에는 아이노드와 관련된 심볼릭 링크(소프트링크)와 하드링크에 대해 알아보겠습니다.
원본 파일과 하드링크가 같은 아이노드 번호를 가집니다. 즉, 이 두 파일은 사실상 같은 파일입니다.
왜 하드링크를 배워야 할까요?
여러분은 파일을 여러 곳에서 사용해야할때 어떻게 합니까? 같은 파일을 여러 이름으로 저장하거나, 다른 위치에서 바로 접근할 수 있다면 더 효율적으로 관리할 수 있겠죠? 하드링크는 이런 문제를 해결해 줍니다.
시스템에서 파일 중복을 줄이고 디스크 공간을 절약할 수 있기 때문입니다.
예를 들어, 백업 시스템에서 동일한 파일을 여러 장소에 두고 관리해야 할 때, 하드링크를 사용하면 실제 파일을 복사하지 않고도 여러 위치에서 동일한 파일을 참조할 수 있습니다.
비유 법으로 배워봅시다 "이름 바꾸기"
하드링크는 마치 "이름을 바꾼 파일"과 같습니다.
예를 들어, 당신이 친구에게 '홍길동'이라는 이름을 줬다면, '홍길동'이라는 이름으로 불리는 사람이 바로 그 친구입니다.
이제 '길동이'라는 이름을 다시 붙였다고 생각해 보세요.
그 친구는 여전히 같은 사람이지만, 두 이름을 다 사용할 수 있게 된 것입니다. 이 경우 '홍길동'과 '길동이'는 사실 같은 사람(파일)입니다.
같은 아이노드 번호: 하드링크 파일은 원본 파일과 정확히 동일한 데이터 블록을 가리킵니다. 즉, 파일의 실제 내용은 동일합니다.
변경사항 동기화: 만약 '홍길동' 이름으로 파일을 수정하고, '길동이' 이름으로도 파일을 수정하면, 두 이름 모두 동일한 내용을 가리키고 있기 때문에 수정 사항이동기화됩니다.
파일 삭제: 원본 파일(홍길동)을 삭제해도, '길동이'는 여전히 존재하고, 그 파일의 내용은 변하지 않습니다. 사실 원본 파일이 삭제되었을 때는, 그 파일을 참조하는 다른 링크가 남아있기 때문에 파일이 삭제되지 않은 것처럼 보입니다.
파일 시스템에서 중요한 데이터 파일을 여러 곳에서 참조해야 할 때, 하드링크를 사용하면 데이터 중복을 줄이고 디스크 공간을 절약할 수 있습니다.
예를 들어, 서버의 데이터베이스 파일이 여러 디렉토리에서 필요할 때, 하드링크를 사용하여 하나의 원본 파일을 여러 이름으로 참조할 수 있습니다.
하드링크는 복사본을 만들지 않고도 파일을 여러 곳에서 사용할 수 있게 해 줍니다.
원본 파일 test.txt가 있다고 가정해 보겠습니다.
하드링크 test_link.txt를 만들면, 두 파일은같은 아이노드를 가리킵니다.
두 파일 중 하나를 수정하면 다른 파일에도 수정 사항이 반영됩니다. 원본 파일을 삭제해도, 하드링크가 여전히 동일한 파일을 가리키고 있으므로 파일이 그대로 남아 있습니다.
소프트링크 (Soft Link, Symbolic Link)
소프트링크(심볼릭 링크)는 원본 파일을 가리키는 "통로" 역할을 합니다.
소프트링크는 원본 파일의 경로를 저장하는 별도의 파일로, 실제 데이터는 저장하지 않습니다.
이 링크는 원본 파일의 위치를 알려주는 주소와 같은 역할을 합니다.
왜 소프트링크를 배워야 할까요?
소프트링크는 시스템 관리에서 파일 경로를 효율적으로 관리하는 데 매우 유용합니다.
예를 들어, 자주 변경되는 설정 파일이나 라이브러리 파일에 대한 경로를 소프트링크로 관리하면, 시스템 업데이트나 변경이 있을 때 소프트링크만 수정하면 되기 때문에 관리가 용이해집니다.
또한, 시스템 설정이나 프로그램 파일들을 여러 곳에서 사용할 때, 소프트링크를 사용하여 경로를 간편하게 지정할 수 있습니다.
비유 법으로 배워봅시다 "주소를 적어 놓은 종이"
소프트링크는 마치 원본 집의 주소를 적어 놓은 종이와 같습니다.
예를 들어, 당신이 친구 집에 가고 싶을 때, 친구의 집 주소를 적어놓은 종이를 받고, 그 주소로 가면 친구를 만날 수 있죠.
이 주소 종이(소프트링크)는 원본 집(파일)의 위치를 가리키고 있습니다.
그러나 이 종이 자체는 집이 아니고, 그저 집의 위치를 알려주는 역할만 합니다.
만약 친구 집이 이사를 가면, 그 주소 종이는 더 이상 유효하지 않게 됩니다.
다른 아이노드 번호: 소프트링크는 원본 파일과 다른 아이노드 번호를 가집니다. 소프트링크 파일은 원본 파일의 경로를 가리키는 문자열로 존재합니다.
동기화 없음: 소프트링크에서 수정한 내용은 원본 파일에 영향을 주지 않습니다. 소프트링크 파일을 수정한다고 해서 원본 파일의 내용은 바뀌지 않습니다.
원본 삭제 시 깨짐: 원본 파일이 삭제되면, 소프트링크는 더 이상 유효하지 않게 됩니다. 즉, 원본 파일이 사라지면, 소프트링크는 '깨진 링크'가 되어 더 이상 작동하지 않습니다.
소프트링크는 파일 경로를 효율적으로 관리하고, 시스템 환경에서 파일을 쉽게 참조할 수 있게 해줍니다. 예를 들어, 여러 버전의 소프트웨어가 설치되어 있을 때, 최신 버전의 소프트웨어를 소프트링크로 가리키면, 소프트웨어 경로를 쉽게 변경할 수 있습니다. 또한, 프로그램의 설정 파일이 여러 디렉토리에서 필요할 때, 소프트링크를 사용하여 중앙 집중식으로 관리할 수 있습니다.
원본 파일 test.txt가 있고, 소프트링크 test_link.txt를 만들었다고 합시다.
소프트링크 파일은 test.txt라는 파일의 위치만 알고 있을 뿐, 파일 자체를 가지고 있지 않습니다.
test_link.txt를 열면, 자동으로 test.txt로 이동하여 내용을 볼 수 있습니다. 하지만 원본 파일을 삭제하면, test_link.txt를 열려고 할 때 오류가 발생할 것입니다. (깨진 링크)
요즘 스마트폰 사용자를 중심으로, 데이터를 무제한으로 테더링하여 사용하는 방법이 화제가 되고 있습니다. 이른바 "APN 우회"를 활용한 방식인데, 마치 폐쇄된 도로의 우회로를 찾아내는 것처럼, 제한된 환경 속에서 새로운 가능성을 열어주는 기법으로 주목받고 있습니다. 그렇다면, APN이란 무엇이며 이를 우회한다는 것은 어떤 의미일까요? 먼저 APN이 무엇인지 확인해봅시다.
1. APN이란 무엇인가?
**APN(Access Point Name)**은 스마트폰이나 태블릿 같은 모바일 기기가 인터넷에 접속하기 위해 반드시 거쳐야 하는 "네트워크 관문"입니다. 통신사가 제공하는 모바일 데이터 서비스를 이용하려면, 기기가 어떤 방식으로 데이터를 전송하고 수신할지를 결정하는 APN 설정이 필요합니다.
이를 이해하기 위해 다음과 같은 비유를 생각해볼 수 있습니다:
비유: 공항의 게이트
APN은 마치 공항의 출입문(게이트)과 같습니다.
비행기가 공항을 통해 목적지로 날아가려면, 특정 게이트를 통해 승객과 화물을 싣고 출발해야 합니다.
이때, **게이트(APN)**는 비행기가 어떤 항공사 소속인지, 어떤 화물을 싣고 있는지, 어떤 노선을 통해 가는지를 결정하는 역할을 합니다.
통신사마다 각기 다른 게이트 설정이 있으며, 이 설정을 기반으로 특정 항공편만 출입하도록 허가하거나, 화물 종류에 따라 별도의 요금을 부과할 수도 있습니다.
APN TEC
APN은 네트워크의 "종단점"과 유사한 개념으로, 데이터를 전송하기 위한 통신 경로를 설정합니다. APN은 크게 두 가지 주요 정보를 포함합니다:
PDN (Packet Data Network)의 주소:
데이터를 전송할 네트워크의 주소를 나타냅니다.
예를 들어, 인터넷에 연결하거나 MMS(멀티미디어 메시지)를 보내기 위한 경로를 정의합니다.
특정 설정 정보:
인증 방식: 통신사가 사용자를 인증하기 위한 사용자 이름과 비밀번호.
프로토콜 설정: IPv4, IPv6 또는 둘 다를 사용하는지.
게이트웨이 정보: 네트워크의 어떤 노드를 통해 데이터를 보낼 것인지.
APN의 구성요소
APN은 다음과 같은 구성 요소로 이루어집니다:
APN 이름:
예: internet.kt.com 또는 lte.sktelecom.com.
이는 기기가 연결하려는 통신사의 네트워크를 식별합니다.
MCC (Mobile Country Code)와 MNC (Mobile Network Code):
통신사의 국가와 네트워크를 식별하는 코드.
예: 대한민국의 KT는 MCC가 450, MNC가 08입니다.
APN 타입:
default: 기본 인터넷 데이터 연결.
mms: 멀티미디어 메시지 서비스.
supl: 위치 기반 서비스(GPS 지원) 데이터.
Proxy 및 Port:
데이터를 중계하거나 보안을 강화하기 위해 사용되는 설정.
APN이 중요한 이유
APN 설정을 통해 통신사는 다음과 같은 작업을 수행합니다:
데이터 요금 관리:
예를 들어, 일반 데이터와 테더링 데이터를 별도로 관리하거나, 특정 데이터만 무료로 제공할 수 있습니다.
(비유: 같은 공항에서도 화물 운송과 여객 운송이 각각 다른 게이트를 이용하는 것처럼, 데이터 유형에 따라 다른 APN 경로를 설정함.)
서비스 최적화:
예를 들어, 동영상 스트리밍 서비스는 고속 데이터 경로를, 텍스트 전송은 저속 경로를 사용하는 방식으로 최적화합니다.
보안 강화:
데이터가 허가된 경로로만 전송되도록 하여 해킹이나 불법 접속을 방지합니다.
2. APN 우회란?
APN 우회란 통신사가 설정한 기본 APN의 제한을 피하고, 대안 경로를 통해 데이터를 사용하는 방법을 의미합니다. 일반적으로 통신사는 테더링 데이터를 제한하기 위해 별도의 APN을 할당하지만, 사용자가 APN 설정을 변경하거나 커스텀 APN을 활용하면 이러한 제한을 우회할 수 있습니다.
이는 마치 고속도로에서 통행료를 내지 않기 위해 작은 시골길을 찾아가는 것과 비슷합니다. 우회로를 찾으면 더 많은 자유를 누릴 수 있지만, 이는 통신사의 정책에 반하는 행위로 간주될 수 있습니다.
통신사 정책과 APN
통신사들은 APN 설정을 기반으로 데이터 사용량을 제한하거나, 특정 서비스에 대해 요금을 부과합니다. 예를 들어:
테더링(핫스팟) 데이터를 일반 데이터와 별도로 제한하려면, 테더링에 별도의 APN을 할당합니다.
데이터 무제한 요금제라도 일부 동영상 스트리밍 서비스는 속도를 제한하는 방식으로 APN을 설정합니다.
APN 우회는 기본적으로 통신사의 제한을 피하고 데이터를 무제한 또는 별도 요금 부과 없이 사용하는 방법입니다. 이를 위해 APN 설정을 조작하거나, 통신사에서 제공하지 않은 커스텀 APN을 추가로 설정하는 방식이 사용됩니다.
APN 우회 기본 원리
통신사의 APN 구조 이해:
통신사는 데이터를 일반 데이터, 테더링 데이터, MMS 데이터 등으로 분리 관리하기 위해 여러 APN을 사용합니다.
예를 들어, 테더링은 별도의 APN 경로로 트래픽을 처리하고, 이 경로에 데이터 제한을 두거나 속도를 제한할 수 있습니다.
APN 우회는 일반 데이터 APN을 사용하여 테더링 데이터를 처리하거나, 다른 APN을 사용해 제한을 피하려는 시도입니다.
우회 방식:
기본 APN 수정: 기존의 통신사 APN을 수정해 데이터를 무제한으로 사용하는 방식.
커스텀 APN 추가: 새로운 APN 프로파일을 추가하여 통신사 정책을 우회.
VPN과 조합: 데이터를 APN에서 암호화된 VPN으로 라우팅하여 통신사가 트래픽의 성격을 파악하지 못하도록 함.
한마디로 통신사들이 무제한 데이터를 모바일에서 사용하는 네트워크로 apn을 설정해놨기에 테더링 핫스팟으로 뿌려지는 인터넷에는 무제한 데이터가 할당되지 않아서 인터넷을 사용할 수 없습니다.
통신사가 이를 막아둔 것이죠.
이러한 정책은 무분별하게 악용햐여 스마트폰을 공유기처럼 사용하는 사용자를 제제할 수 있지만 같은 통신사의 요금제를 이용하는 개인 사용자는 조금 억울할 수 있습니다.
아래는 apn 우회를 방법론 적으로만 설명하고있습니다.
APN 우회 방법 (안드로이드와 아이폰)
1. 안드로이드에서 APN 우회 설정
안드로이드는 APN 설정을 직접 수정할 수 있는 기능을 제공하며, 방법은 다음과 같습니다:
APN 설정 메뉴 접근:
설정 → 네트워크 및 인터넷 → 모바일 네트워크 → APN (접속 이름) 메뉴로 이동.
새 APN 추가 또는 기존 APN 수정:
새 APN 추가: 우회에 사용할 새로운 APN을 추가.
기존 APN 수정: 통신사에서 제공한 기본 APN 정보를 일부 수정.
APN 설정 정보 입력:
일반적으로 데이터 우회를 위해 사용하는 정보:
이름: 임의로 설정 가능 (예: Custom APN)
APN: internet 또는 default
인증 방식: 기본 설정(없음) 또는 PAP/CHAP
MMSC, MMS 프록시: 비워두기
APN 타입: default,supl 또는 internet
APN 저장 후 활성화:
새로 추가하거나 수정한 APN을 선택해 활성화.
테더링 데이터 우회:
테더링 사용 시에도 동일한 APN이 적용되도록 설정하거나, VPN을 병행해 트래픽을 숨기는 방식 사용.
2. 아이폰에서 APN 우회 설정
아이폰은 기본 설정에서 APN을 수정할 수 없는 경우가 많으므로, 프로파일(Profile) 파일을 설치하는 방식으로 접근해야 합니다.
프로파일 생성:
APN 설정을 포함한 구성 프로파일을 생성하기 위해 Apple Configurator 또는 프로파일 생성 사이트를 사용.
필요한 APN 정보:
APN: internet
사용자 이름/비밀번호: 비워두기 또는 통신사 기본값.
APN 타입: default 또는 internet.
프로파일 설치:
생성된 프로파일 파일(.mobileconfig)을 이메일이나 iCloud Drive를 통해 아이폰으로 전송.
Bourne Shell (sh): 유닉스에서 가장 초기의 쉘로, 많은 리눅스 배포판에서 기본적으로 설치됩니다.
C Shell (csh): C언어의 문법을 모방하여 사용성을 향상시킨 쉘입니다. 다양한 편리 기능을 제공하지만, 처리 속도가 느린 단점이 있습니다.
Korn Shell (ksh): Bourne Shell을 확장한 쉘로, C Shell의 기능을 포함하며 빠른 처리 속도를 자랑합니다.
Bash (Bourne Again Shell): 현재 가장 널리 사용되는 쉘로, Bourne Shell의 기능을 기반으로 하여 Korn Shell과 C Shell의 장점을 결합했습니다. sh 셸을 기반으로 만들어졌으며 리눅스에서 사용자 계정을 생성할때 특별한 셀을 지정하지 않으면 기본적으로 사용되는 셸입니다. bash는 sh를 기반으로 korn shell(ksh) + C shell(csh)의 장점을 모아 만들었으며 무로료 배포되어 빠르게 시장을 점유했습니다.
Z Shell (zsh): Bash의 기능을 확장하고 사용성을 더욱 향상시킨 쉘로, macOS Catalina 버전부터 기본 쉘로 사용됩니다.
tcsh Shell:csh의 기능을 강화한 쉘입니다.
내가 원하는 셸을 사용해 보자
내가 사용 중인 셸 확인하기
# echo $SHELL# env|grep SHELL
변경 가능한 셸 확인하고, 일시적으로 변경하기
# cat /etc/shells# /bin/sh
변경 가능한 셸 확인하고 , 셸 변경하기
# cat /etc/shells# chsh -l
(방법1)
# chsh ubuntu -s /bin/dash <- 예시로 우분트 셸을 dash셸로 변경해보기
(방법2)
# vi /etc/passwd <- vi 편집기로도 변경 가능