728x90


Hyper-V 구성으로
Host Win 11 (Host) HyperVM -Net : IP : 10.10.10.1, gw:10.10.10.1
Vm Rocky Linux 10: ehh0 : IP : 10.10.10.2, gw:10.10.10.1
로 설정하고 Host에서 SSH 2222 으로 10.10.10.2 에 접속 하고 자 한다.
Hyper-V Host → Rocky Linux 10 SSH 접속 구성아래 단계별로 설정합니다.
1. Hyper-V 가상 스위치 생성 (Windows Host)
Hyper-V 관리자 → 가상 스위치 관리자 → 내부(Internal) 스위치 생성, 이름 HyperVM-Net.
또는 PowerShell (관리자):
# 새로운 네트워크를 생성한다.
New-VMSwitch -Name "HyperVM-Net" -SwitchType Internal
# 네트워크 I/F 생성 결과를 확인한다
Get-NetAdapter
2. Host vNIC IP 설정 (Windows Host)
PowerShell (관리자):
# "vEthernet (HyperVM-Net)" 어댑터에 IP 설정
$iface = Get-NetAdapter | Where-Object { $_.Name -like "*HyperVM-Net*" }
New-NetIPAddress -InterfaceIndex $iface.ifIndex -IPAddress 10.10.10.1 -PrefixLength 24
또는 제어판 → 네트워크 → vEthernet (HyperVM-Net) → IPv4 수동 설정:
- IP: 10.10.10.1
- 서브넷: 255.255.255.0
- GW: 비워두거나 10.10.10.1
1.1 IP 할당 및 NAT 구성 결과
PS C:\Windows\system32> New-VMSwitch -Name "HyperVM-Net1" -SwitchType Internal
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
HyperVM-Net Internal
PS C:\Windows\system32> Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
이더넷 4 VirtualBox Host-Only Ethernet Adapter 30 Up 0A-00-27-00-00-1E 1 Gbps
Wi-Fi Intel(R) Wi-Fi 6E AX211 160MHz 5 Not Present 9A-69-C2-24-75-AA 0 bps
vEthernet (HyperVM-Net1) Hyper-V Virtual Ethernet Adapter #2 14 Up 00-15-5D-38-01-08 10 Gbps
이더넷 2 Realtek USB GbE Family Controller 4 Up 00-E0-4C-68-04-12 100 Mbps
PS C:\Windows\system32> $iface = Get-NetAdapter | Where-Object { $_.Name -like "*HyperVM-Net*" }
New-NetIPAddress -InterfaceIndex $iface.ifIndex -IPAddress 10.10.10.1 -PrefixLength 24
# 다음과 같이 I/F index를 명시도 가능하다.
PS C:\Windows\system32> New-NetIPAddress -InterfaceIndex 14 -IPAddress 10.10.10.1 -PrefixLength 24
IPAddress : 10.10.10.1
InterfaceIndex : 14
InterfaceAlias : vEthernet (HyperVM-Net1)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Tentative
ValidLifetime :
PreferredLifetime :
SkipAsSource : False
PolicyStore : ActiveStore
IPAddress : 10.10.10.1
InterfaceIndex : 14
InterfaceAlias : vEthernet (HyperVM-Net)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Invalid
ValidLifetime :
PreferredLifetime :
SkipAsSource : False
PolicyStore : PersistentStore
PS C:\Windows\system32> New-NetNat -Name "RockyNAT" -InternalIPInterfaceAddressPrefix "10.10.10.0/24"
Name : RockyNAT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 10.10.10.0/24
IcmpQueryTimeout : 30
TcpEstablishedConnectionTimeout : 1800
TcpTransientConnectionTimeout : 120
TcpFilteringBehavior : AddressDependentFiltering
UdpFilteringBehavior : AddressDependentFiltering
UdpIdleSessionTimeout : 120
UdpInboundRefresh : False
Store : Local
Active : True
1.2 포트 포워딩 설정 (Host 2222 -> VM 22)
Add-NetNatStaticMapping -NatName "RockyNAT" -Protocol TCP `
-ExternalIPAddress 0.0.0.0 -ExternalPort 2222 `
-InternalIPAddress 10.10.10.2 -InternalPort 22
(Host 2222 -> VM 2222) 으로 접속하려면 아래와 같이 설정한다. (기존 룰 삭제후 재등록)
# 1. 기존에 등록된 2222번 포트 매핑이 있는지 확인하고 삭제합니다.
$existingMapping = Get-NetNatStaticMapping -NatName "RockyNAT" | Where-Object { $_.ExternalPort -eq 2222 }
if ($existingMapping) {
Write-Host "기존 매핑(Port 2222)을 삭제합니다..." -ForegroundColor Yellow
Remove-NetNatStaticMapping -StaticMappingID $existingMapping.StaticMappingID -Confirm:$false
}
# 2. 새로운 매핑 등록 (Host:2222 -> VM:2222)
Write-Host "새로운 매핑(Host:2222 -> VM:2222)을 등록합니다." -ForegroundColor Green
Add-NetNatStaticMapping -NatName "RockyNAT" -Protocol TCP `
-ExternalIPAddress 0.0.0.0 -ExternalPort 2222 `
-InternalIPAddress 10.10.10.2 -InternalPort 2222
PS C:\Windows\system32> Add-NetNatStaticMapping -NatName "RockyNAT" -Protocol TCP `
-ExternalIPAddress 0.0.0.0 -ExternalPort 2222 `
-InternalIPAddress 10.10.10.2 -InternalPort 22
StaticMappingID : 0
NatName : RockyNAT
Protocol : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress : 0.0.0.0
ExternalPort : 2222
InternalIPAddress : 10.10.10.2
InternalPort : 22
InternalRoutingDomainId : {00000000-0000-0000-0000-000000000000}
Active : True
3. Rocky Linux 10 VM — 네트워크 설정
VM에 HyperVM-Net 스위치를 연결한 후 부팅.
# NetworkManager로 eth0 설정
nmcli con mod eth0 \
ipv4.method manual \
ipv4.addresses 10.10.10.2/24 \
ipv4.gateway 10.10.10.1 \
ipv4.dns 8.8.8.8 \
connection.autoconnect yes
nmcli con up eth0
확인:
ip addr show eth0
ip route
4. Rocky Linux — SSH 포트 2222 설정
# /etc/ssh/sshd_config
sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
# 또는 직접 편집: Port 2222 추가 (22도 남길 경우 두 줄 병기)
sudo systemctl restart sshd
SELinux에 포트 2222 허용:
sudo semanage port -a -t ssh_port_t -p tcp 2222
firewalld 허용:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# 적용된 룰을 확인합니다.
sudo firewall-cmd --list-all
# ports: 2222/tcp 가 확인되면 Ok 입니다.
5. Windows Host — 방화벽 규칙 (필요시)
Host에서 아웃바운드로 막혀있다면 (대부분 불필요, 참고용):
New-NetFirewallRule -DisplayName "SSH to VM 2222" `
-Direction Outbound -Protocol TCP -RemotePort 2222 -Action Allow
ㅁ host에서 방화벽 설정
PS C:\Windows\system32> New-NetFirewallRule -DisplayName "SSH to VM 2222" `
-Direction Outbound -Protocol TCP -RemotePort 2222 -Action Allow
Name : {bc1945c6-e6cf-4b79-b6f7-2c3a9313a274}
DisplayName : SSH to VM 2222
Description :
DisplayGroup :
Group :
Enabled : True
Profile : Any
Platform : {}
Direction : Outbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : 저장소에서 규칙을 구문 분석했습니다. (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
RemoteDynamicKeywordAddresses : {}
6. SSH 접속 테스트
# PowerShell 또는 Windows Terminal
ssh -p 2222 username@10.10.10.2
# 또는
ssh username@10.10.10.2 -p 2222
트러블슈팅 체크리스트
증상 확인 사항
| Connection refused | sshd 실행 여부 systemctl status sshd, 포트 확인 ss -tlnp | grep 2222 |
| No route to host | VM IP/GW 설정, Host vNIC IP 확인 |
| ping 실패 | firewalld ICMP 허용 여부, Hyper-V 스위치 타입 Internal 확인 |
| SELinux 거부 | sudo ausearch -m avc -ts recent 로 확인 후 semanage 재적용 |
7. Linux에서 IP는 있는데 ping이 안 될 때 — firewalld 확인
ㅁ 방화벽을 중지하고 Ping를 보내면 작동이되면 방화벽 문제 입니다.
bash
# ICMP 허용 여부 확인
sudo firewall-cmd --list-all
# ICMP 허용
sudo firewall-cmd --permanent --add-icmp-block-inversion
sudo firewall-cmd --permanent --remove-icmp-block rich-rule='...'
# 가장 빠른 확인: 방화벽 임시 중지 후 ping 재시도
sudo systemctl stop firewalld
ping -c 3 10.10.10.1
firewall을 중지하고 ping 되면 firewalld 규칙 문제입니다:
bash
sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="icmp" accept'
sudo firewall-cmd --reload
sudo systemctl start firewalld
# 방화벽 정책을 확인합니다.
firewall-cmd --list-all

728x90
반응형
'InfraPlatform' 카테고리의 다른 글
| Authelia - 오픈 소스 기반의 강력한 인증 서버 분석 비교 (0) | 2026.04.09 |
|---|---|
| Authelia - 리버스 프록시 환경 강력한 인증(Authentication)과 인가(Authorization) 오픈소스 보안 서버 (0) | 2026.04.09 |
| Ollama + LLama + NVIDIA - WSL Oracle Linux 9.5 (0) | 2026.02.13 |
| Windows 11 설치 중 네트워크 드라이버 0x2000022f 오류 해결 (0) | 2026.02.04 |
| WSL2에서 VHDX 디스크 마운트하는 방법 (0) | 2026.01.20 |
| Windows 10/11 - WSL 2 업그레이드 (0) | 2026.01.19 |
| 웹서버 취약점 - SSL 보안 설정 및 점검 가이드 (0) | 2026.01.07 |