잠시 확인해 볼 것이 있어 raw_socket으로 프로그래밍을 해 보았다.
https://www.binarytides.com/raw-udp-sockets-c-linux/
- 대략 raw_socket 을 만들어서
- UDP 구조체 데이터를 채워 놓고,
- source-port 6666 / dest-port 8622 로 패킷을 보내는 예제
에 기반해서 프로그램을 짜고 테스트를 해 보았더니
nitraqu@ubuntu:~$ netstat -ano | grep udp
udp 0 0 0.0.0.0:5353 0.0.0.0:* off (0.00/0/0)
udp 0 0 0.0.0.0:40909 0.0.0.0:* off (0.00/0/0)
udp 0 0 127.0.0.53:53 0.0.0.0:* off (0.00/0/0)
udp 0 0 192.168.88.133:68 192.168.88.254:67 ESTABLISHED off (0.00/0/0)
udp 0 0 0.0.0.0:631 0.0.0.0:* off (0.00/0/0)
udp6 0 0 :::5353 :::* off (0.00/0/0)
udp6 0 0 :::46525 :::* off (0.00/0/0)
와 같이 해당 포트가 보이지 않았다.
뭔가 그래도 볼 수 있는 명령어가 있지 않을까 검색해 보니
'ss' 라는 명령어가 있었다.
(https://unix.stackexchange.com/questions/481435/ss-shows-a-raw-socket-what-does-it-mean-that-it-is-listening-on-ipproto-255)
man으로 검색해 보니 한 줄 설명으로 '소켓을 조사하는 유틸리티' 라고 한다.
ipproto-255 로 grep을 하면
nitraqu@ubuntu:~$ sudo ss -ap | grep ipproto-
??? UNCONN 0 0 0.0.0.0:ipproto-255 0.0.0.0:* users:(("raw_udp",pid=28428,fd=3))
뭔가 나오는 것을 볼 수 있다.
그리고 raw_socket을 열었던 프로세스 명까지 확인해 볼 수 있다.
-----------
추가로 다시 확인하다 보니...
netstat에서도 확인할 수 있었다.
nitraqu@ubuntu:~$ sudo netstat -ap | grep raw
raw 0 0 0.0.0.0:255 0.0.0.0:* 7 28428/./raw_udp
raw6 0 0 [::]:ipv6-icmp [::]:* 7 705/NetworkManager
1. udp가 아니라 raw로 나오는 것 뿐이었다.
2. root 권한이 있어야 한다.



덧글