오랜만에 부팅한 ubuntu22 vm 에서 dhcp ip 할당이 실패되고 있다.
"ERROR:Unknown state for interface NetworkctlListState"
2가지 상황이 중첩되어 발생한 문제였다.
정보를 좀더 모으고,
컨텍스트에서 해답을 분리할 필요가 있어 보인다.
(단순히 'a니까 b이다' 이런 느낌으로 접근하면, 다양한 ip 할당실패 케이스들에 압도되어,
필요한 생각을 만들어 내는데 방해가 될거란 생각이 들었다.)
내 상황과 100% 일치하는게 내 지금 생각, 내 지금 언어로 형편좋게 적혀있을꺼라는 생각을
의식적으로 멀리해야, 생각 키우기에 도움이 될것 같았다.
이전에 비슷한 문제가 있었어서, 그때 분석문서를 참고하여 networkd 서비스 유닛 상태를 체크
올라가 있지 않은걸 확인
ubuntu22@ubuntu22-virtual-machine:~$ systemctl list-unit-files | grep enabled | grep networkd
UNIT FILE STATE VENDOR PRESET
....
networkd-dispatcher.service enabled enabled
systemd-networkd.service disabled enabled <-- !!
systemd-networkd.socket disabled enabled <-- !!
ubuntu22@ubuntu22-virtual-machine:~$
아래 명령으로 심볼릭 링크를 만들어준다
systemctl enable systemd-networkd.socket
systemctl enable systemd-networkd.service
root@user-virtual-machine:/mnt/hgfs/shared# systemctl enable systemd-networkd.socket
Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket.
root@user-virtual-machine:/mnt/hgfs/shared# systemctl enable systemd-networkd.service
Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-network-generator.service → /lib/systemd/system/systemd-network-generator.service.
Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service.
root@user-virtual-machine:/mnt/hgfs/shared#
이후 ERROR:Unknown state for interface NetworkctlListState 에러는 사라졌으나
dhcp ip 를 받아오지 못하고 있었고, systemd-networkd 에서 기본정보 query 를 해보니
ens33 인터페이스가 no-carrier / unmanaged 상태로 떠있는걸 확인하였다.
root@user-virtual-machine:/usr/lib/systemd/system# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 ens33 ether no-carrier unmanaged
3 docker0 bridge no-carrier unmanaged
3 links listed.
root@user-virtual-machine:/usr/lib/systemd/system#
ens33 인터페이스 파일 설정이 잘못되어서, unmanaged 가 된거라고 생각했고,
아래 작업들을 시도하며 생각을 보완해갔다
nmcli -f NAME,UUID,FILENAME connection
파일위치에 대해 여러가지 이야기가 많은데, 위 명령으로 파일위치를 확인하였다.
설정파일을 확인 --> 몇개 시도해봤지만, 크게 느낌이 오진 않았고, 다른 부분을 생각
기존 인터페이스 파일을 실수로 삭제, 삭제한 김에 새로 만들기로 해봄
nmcli 로 만들고 up 하면, device ens33 not available because device has no carrier 에러를 확인
내가 모르는 설정들이 있는지 체크해보고 싶은 마음이 들었고, nmtui 로 다시 시도
--> 동일하게 no carrier 에러를 확인하였음, 뭔가 ens33 디바이스에 문제가 있다는 느낌이 듬
vmware workstation 에서 device disconnect 후 connect
journalctl --system -f 로 device connect 시 특별한 에러로그가 올라오는지도 체크
ethtool 을 사용해 speed 와 duplex 를 unknown / unknown 에서 100 / full 로 변경
이후 dhclient ens33 을 해보았으나, hang 상태인거 확인
뭔가 ens33 인터페이스가 이상하긴한데, 설정파일 문제는 아닌것 같다는 느낌이 조금씩 축적
nat 네트워크 gateway 가 안되어 있어서, dhclient 가 실패된다고 생각
gateway 를 확인해보니, 안되어 있는걸 확인
gateway 설정 시도하였으나, gateway 가 붙지않는걸 확인
--> ip 가 있어야 한다는 걸까, 조금 의아한 느낌
ip route add default via 192.168.171.2 dev ens33 시도
새로운 에러, Error: Nexthop has invalid gateway
ip route man 페이지를 확인하여도, 딱히 명령이 잘못된것 같아보이진 않는다.
/// man ip route
ip route add default via 192.168.1.1 dev eth0
Adds a default route (for all addresses) via the local gateway 192.168.1.1 that can be reached on device eth0.
ubuntu22 에서 no-carrier 문제가 있을때, 답변자들이 어떤 생각으로, 어떤 확인을 요청하는지 보기로 함. 주로 ping 을 외부로 보내라고 하는데 나도 Network unreachable 로 뜨는걸 확인했고, 이는 예상한 결과였음
그런데, 큰 기대하지 않고, 요청대로 Setttings - Network - Wired 를 봤는데
"Cable unplugged" 인걸 확인
Cable unplugged 를 검색하고, 2015년에 어떤 분이 작성해주신 글을 확인하고,
vmware workstation 의 virtual network manager 에서 restore defaults 를 수행.
드라이버 삭제 팝업이랑, 설치 팝업이 뜨는걸 확인. 이후 vmware 를 power on
ens33 carrier 도 잡혔고, dhcp ip 할당도 성공적으로 된걸 확인
ssh 연결이 잘붙는걸 확인하고 이슈 종료
"파일위치에 대해 여러가지 이야기가 많은데, 위 명령으로 파일위치를 확인하였다."
--> 나중에 파일위치 찾을때 도움이 될수도 (아마 안될 가능성이 더 높지만) 있을듯 하여 작성