엔지니어로 근무하면서 보안 등을 위해 폐쇄망으로 운영되는 서버들을 종종 다뤄왔습니다. 그 중에서 필요한 어떤 패키지가 있는데 yum이나 apt와 같은 패키지 툴을 사용할 수 없는 경우는 참 당혹스러웠습니다. rpm이나 deb 파일로 PC에서 하나씩 받기에는 너무 많은 수고가 들어갑니다. 그렇게 고민하다가 고안하고 도전해 본 방법이 잘 되어서 기록해봅니다:)
(보안을 위해 노트북 연결을 제외한 모든 로컬 네트워크는 끊는 것을 권고드립니다.)
준비물 : 서버, 1G 케이블, 노트북, 테더링이 가능한 휴대폰
(서버는 ubuntu 16.04로 테스트하였습니다.)
먼저, 휴대폰 테더링으로 제공되는 와이파이에 접속된 노트북을 서버와 다이렉트로 연결해줍니다. 그리고 노트북과 서버의 각 포트에 통신에 사용할 같은 대역의 사설 IP를 할당해주고 서로를 게이트웨이로 바라보도록 합니다.
### 리눅스 인터페이스에 IP 할당
# cat /etc/network/interface
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eno4
iface eno4 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.2 # 노트북의 IP
그리고 서로 다른 네트워크 간 패킷을 전송하기 위해서는 아래 커널 파라미터를 1로 수정해 주어야 합니다.
# 커널 파라미터 확인
$ cat /proc/sys/net/ipv4/ip_forward
0
$ sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 0
# 영구적용
$ sysctl -w net.ipv4.ip_forward=1
# 일시 적용
$ echo 1 > /proc/sys/net/ipv4/ip_forward
'제어판 - 네트워크 및 공유센터 - 이더넷 옵션'에서 아래와 같이 설정해 줍니다.
그리고 서로 통신을 위해 라우팅과 DNS를 추가해 줍니다.
### 노트북으로의 Routing 지정
# ip route add default via 192.168.0.2 dev eno4
# ip route
default via 192.168.0.2 dev eno4
...
# vi /etc/resolv.conf
### 구글 DNS와 KT DNS
nameserver 8.8.8.8
nameserver 168.126.63.1
이렇게 해서 서버쪽의 세팅은 끝났습니다. 그리고 아래와 노트북에서 명령 프롬프트를 관리자 권한으로 실행시켜 줍니다.
route print 명령어로 현재의 Interface List와 피폴트 라우팅(0.0.0.0/0)의 Metric을 확인해보니 제 이더넷 인터페이스는 22, 와이파이 인터페이스는 1의 번호를 가지고 있으며, Metric은 40을 가지고 있습니다. 이를 토대로 서버의 대역과 와이파이 대역을 연결해 줍니다.
> route print
===========================================================================
Interface List
...
22...b0 4f 13 d2 64 21 ......Realtek USB GbE Family Controller #2
30...84 7b 57 90 e0 ac ......Intel(R) Wi-Fi 6E AX211 160MHz
1...........................Software Loopback Interface 1
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.40.1 192.168.40.61 40
...
서버와의 IP 대역을 디폴트 라우팅보다 더 낮은 Metric으로 설정해 줍니다. 그리고 '제어판 - 네트워크와 공유센터 - Wi-Fi 인터페이스 - 속성'에서 아래의 그림 처럼 이더넷 네트워크를 쉐어링 해줍니다.
### IF 22 : 이더넷
### IF 30 : Wi-Fi
> route add 192.168.0.0 mask 255.255.255.0 192.168.0.1 IF 30 Metric 20
> route add 192.168.40.0 mask 255.255.255.0 192.168.40.1 IF 22 Metric 20
이렇게 설정하는 것으로 이더넷 인터페이스는 Wi-Fi 인터페이스로의 경로를 알게 되고, 반대로 Wi-Fi 인터페이스는 이더넷 인터페이스로의 경로를 알게 됩니다.
이렇게하여 서버에서 'ping 8.8.8.8'과 'ping google.com' 등으로 외부 통신과 DNS가 잘 동작하는 것을 확인하시고 yum과 apt를 사용해서 간편하게 패키지를 다운받으실 수 있습니다.
'System Engineering > Linux' 카테고리의 다른 글
[커널이야기] 리눅스 메모리 1 - 메모리를 확인하는 방법과 slab/swap 메모리 (2) | 2023.06.15 |
---|---|
[커널이야기] Load Average로 시스템 콜 추적하기 (0) | 2023.06.09 |
[커널이야기] Linux top 명령어와 프로세스 (0) | 2023.04.13 |
[커널이야기] Linux 시스템의 구성 정보 확인하기 - BIOS / CPU / NUMA / NIC / DISK (0) | 2023.04.11 |
Rhel7.7/KVM에 PCI-Passthrough/SR-IOV 설정하기 (0) | 2021.02.19 |