netstat -anp | grep 8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::8080 :::* LISTEN -
그럼에도 ACL이 허용된 다른 서버에서 telnet으로 접근을 시도하면 정상적으로 접근이 된다.
telnet 10.0.13.35 8080
Trying 10.0.13.35...
Connected to 10.0.13.35.
Escape character is '^]'.
^]
기본적으로 AF_INET6 소켓은 실제로 IPv4 및 IPv6 모두에서 작동하게 되는데 Golang Echo framework에서 서버 실행 시 소켓 설정하는 부분을 보면 다음과 같다.
func favoriteAddrFamily(network string, laddr, raddr sockaddr, mode string) (family int, ipv6only bool) {
switch network[len(network)-1] {
case '4':
return syscall.AF_INET, false
case '6':
return syscall.AF_INET6, true
}
if mode == "listen" && (laddr == nil || laddr.isWildcard()) {
if supportsIPv4map() || !supportsIPv4() {
return syscall.AF_INET6, false
}
if laddr == nil {
return syscall.AF_INET, false
}
return laddr.family(), false
}
if (laddr == nil || laddr.family() == syscall.AF_INET) &&
(raddr == nil || raddr.family() == syscall.AF_INET) {
return syscall.AF_INET, false
}
return syscall.AF_INET6, false
}
- echo에서 네트워크 설정 시 "tcp"를 사용할 경우 함수 맨 위 switch문의 case에 걸리지 않기 때문에 하위 조건들에 모두 일치하지 않을 경우 결국 AF_INET6로 소켓이 설정된다.
- 결론적으로 AF_INET6로 설정되면 결국 netstat 명령 시 tcp6로만 보여지지만 IPv4, IPv6모두 연결이 가능하다.
참고
'Work > 개발 노트' 카테고리의 다른 글
[k8s] Image Pull 실행 시 ECR 로그인 적용하기 (0) | 2020.09.26 |
---|---|
[Go언어] embedded struct bson marshaling 시 struct 이름으로 키가 생성되는 문제 (0) | 2020.09.18 |
[Flutter] Drawer 위젯 만들어보기 (1) | 2020.09.11 |
[WEB] certbot으로 Let's Encrypt 인증서 발급 받기 (1) | 2020.09.07 |
[WEB] 쿠키 개념 잡기 (0) | 2020.09.06 |
댓글