서버에 네트워크가 연결되지 않을때 네트워크 어뎁터 상태, ip address 구성, route 정보, ping, 네트워크 연결 상태, 네트워크 연결 테스트, 방화벽 설정 등을 점검하는 방법에 대해서 정리해 보았습니다.


-------------------------------------------------------- Linux -----------------------------------------------------------

네트워크 어뎁터가 연결되어 있는지 확인하기 위해 리눅스 에서는 ethtool을 사용합니다. 명령의 결과 가장 아래에 Link detected 가 yes로 되어 있으면 네트워크 어뎁터가 연결되어 있는 것입니다.


네트워크 IP 구성이 잘 되어있는지 확인하기 위해 ip address 명령을 사용 합니다. 


라우팅 정보는 route 명령을 사용해서 확인 합니다.


다른 장비로 Ping이 되는지 테스트 해봅니다.


라우팅 경로는 traceroute를 사용하고 mtr을 사용해서 좀 더 자세한 정보를 얻을 수 있습니다.

Network port 가 열려 있는지는 telnet, nc, nmap 등의 도구로 테스트 가능하나 샘플로 테스트는 진행하지 못했습니다.


Network connection 상태는 netstat 명령을 사용하면 확인 가능 합니다.


-------------------------------------------------------- ESXi -----------------------------------------------------------

네트워크 어뎁터가 연결되어 있는지 확인하기 위해 ESXi에서는 esxcli network nic list 명령을 사용합니다. Link Status 값이 Up으로 되어 있으면 네트워크가 연결된 것입니다.


ESXi 에서는 esxcli network ip interface ipv4 address list 명령을 사용해서 IP address와 netmask를 알 수 있습니다. CLI로 물리 어뎁터의 IP를 확인하는 방법은 찾지 못했습니다. vCenter나 Console에서 확인이 가능하기는 하지만 esxcli 또는 PowerCLI로 확인하는 방법도 있을것 같습니다.


라우팅도 esxcli 명령을 사용해서 확인 합니다.


esxi 에서는 vmkping을 사용해서 네트워크 상태를 확인할 수 있습니다. -s를 이용하면 패킷의 크기를 조절할 수 있고, -I 옵션을 사용하면 특정 vmk 을 사용해서 ICMP를 보낼 수 있습니다.


ESXi 에서도 traceroute를 사용할 수 있습니다.


telnet은 예전 버전에서는 사용 가능했던 것으로 보이나 6.7에서는 실행되지 않았습니다. 대신 nc를 사용하면 됩니다. 자세한 내용은 아래 KB를 확인하면 됩니다.

https://kb.vmware.com/s/article/2020669


Network 이 연결된 상태를 확인하려면 esxcli network ip connection list 명령을 사용하면 됩니다. 자세한 설명은 KB에 있습니다.

https://kb.vmware.com/s/article/2020669?lang=en_US


Network connection의 상태는 esxcli network ip connection list 명령을 통해서 확인 가능 합니다.


ESXi 에도 기본적으로 방화벽이 설정되어 있습니다. esxcli network firewall ruleset rule list 명령을 통해서 어떤 포트가 열려 있는지 확인 가능 합니다.


------------------------------------------------------ Windows ---------------------------------------------------------

Windows 에서는 NIC가 연결되어 있는지 확인은 GUI로 할 수 도 있으나 PowerShell로 확인해 보도록 하겠습니다. Get-NetAdapter cmdlet을 사용하면되고 Ethernet1 은 Network cable이 Disconnect 되어 있는 상태이고 Ethernet0은 정상적으로 연결되어 있는 상태인 것을 확인할 수 있습니다.


Windows 에서는 ipconfig 명령을 사용하는 것이 더 일반적이지만 PowerShell의 Get-NetIPAddress cmdlet을 사용해 보았습니다. Windows 에서도 ipconfig, netstat 명령처럼 오래전에 개발된 명령들은 더이상 추가 개발이나 수정을 하지 않기 때문에 PowerShell을 사용하는 것에 익숙해질 필요가 있습니다.


라우팅도 route print 명령이 있지만 PowerShell을 사용해서 확인 합니다.


Ping을 사용할 수 있지만 역시 PowerShell을 사용하도록 하겠습니다. Test-Connection은 ICMP를 보내는 Ping과 유사하다고 생각하면 됩니다. Test-NetConnection으로 Port를 지정해주면 해당 포트가 열려 있는지 확인할 수 있습니다. (Windows 에서 보안 이슈로 telnet은 기본 설치가 아닙니다. Feature로 추가를 하거나 Test-Connection 명령으로 테스트를 해야 합니다.)


Windows 에서는 Tracert를 사용할 수 있는데 PowerShell의 Test-NetConnection을 사용할 수도 있습니다. Windows에는 mtr과 같은 도구가 설치되어 있지 않은데 PowerShell로 개발된 스크립트가 있으니 대용으로 사용할 수 있습니다. https://gist.github.com/tylerapplebaum/dc527a3bd875f11871e2


Network의 연결 상태는 netstat 명령으로도 확인 가능하지만 Get-NetTCPConnection cmdlet으로 확인 가능 합니다. netstat에 마이너한 버그가 있었던 것으로 기억하는데 오래전 코드라 수정을 안한다고 기억 합니다.


방화벽 설정 룰을 확인하는 PowerShell cmdlet은 Get-NetFirewallRule, Get-NetFirewallPortFilter 를 조합하는 것인데 사용법이 편하지 않습니다. (블로그를 보면 이 cmdlet을 조합하는 것이 있습니다. https://itluke.online/2018/11/27/how-to-display-firewall-rule-ports-with-powershell/) 

방화벽 설정은 기존 netsh 명령으로 확인을 할 수 있습니다.



감사합니다.

+ Recent posts