전자기기,PC,노트북,공유기등 하드웨어 정보 공유
  • 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
질문

macOS에서 Linux VIP 접속시 하나만 붙는 현상

스톤콜드 85

0

1

안녕하세요

 

네트워크를 잘몰라서 VIP에 대해 문의 드립니다.

 

SteamDeck 기본으로 있는 무선과 Dock에 추가 했을때 생기는 유선을 같은 IP로 쓰려고하고 있습니다.

예를 들어 원격 접속을 위하여 macOS - Moonlight로 SteamDeck - Sunshine 붙을때 같은 IP로 Dock 연결 유무에 상관없이 쓰려는 용도입니다.

 

VIP 설정은 /etc/NetworkManager/dispatcher.d/if-event.sh 로 잘할당이 되고 이벤트 따라 잘 넘겨 받게 되어 있습니다.

 

이상한 점은 unRAID 서버나 router (openwrt) / Proxmox VE 에서 SteamDeck을 붙을때 VIP 따라서 무선랜과 유선랜을 왔다갔다 하는데 macOS에서만 무조건 무선으로 붙네요.

공통적으로 보면 리눅스에서는 정상, macOS는 이상하게 통신하고 있습니다.

(윈도우에서도 속도는 느리지만 iftop 으로 확인시 유선 정상 동작합니다...)

 

혹시 이유 아시는 분 계시면  알려주세요.

 

 

 

Network 설정

Route : 자작 x86 openwrt 로 macOS, unRAID, SteamDeck 등 직결

macOS

 - 유선 ip : 192.168.1.11

SteamDeck

 - 무선 ip (기본) : 192.168.1.37

 - 유선 ip : 192.168.1.38

 - VIP : 192.168.1.36

 

테스트 방식

iperf3 나 트래픽 일으키고 iftop 등으로 확인, 확인전에 느낌이 이미 옵니다.

iperf3 -c 192.168.1.37 / 192.168.1.36 - 400mbps 왔다갔다. 느림

iperf3 -c 192.168.1.38 - 1G망 속도 뽑음

 

 

VIP 할당 상태 (SteamDeck)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 50:5a:65:a6:56:61 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.37/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 39994sec preferred_lft 39994sec
    inet6 fe80::525a:65ff:fea6:5661/64 scope link
       valid_lft forever preferred_lft forever
10: enp4s0f3u1u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e0:4c:68:01:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.38/24 brd 192.168.1.255 scope global dynamic noprefixroute enp4s0f3u1u4
       valid_lft 42643sec preferred_lft 42643sec
    inet 192.168.1.36/24 scope global secondary enp4s0f3u1u4
       valid_lft forever preferred_lft forever
    inet6 fe80::abcb:2be5:f48a:f180/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

 

Route 정보 (SteamDeck)

default via 192.168.1.1 dev enp4s0f3u1u4 proto dhcp src 192.168.1.38 metric 100
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.37 metric 600
192.168.1.0/24 dev enp4s0f3u1u4 proto kernel scope link src 192.168.1.38 metric 100
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.37 metric 600

  아무것도 안한 상태

  ip route add 192.168.1.0/24 dev enp4s0f3u1u4 src 192.168.1.36 metric 10 로 추가도 해봄...

 

Event 처리 (SteamDeck)

/etc/NetworkManager/dispatcher.d/if-event.sh

#!/usr/bin/env bash

interface=$1
event=$2

if [ -z "${interface}" ]; then
    exit
fi

vip="192.168.1.36/24"
wlan="wlan0"
eth="enp4s0f3u1u4"

date "+%Y-%m-%d %H:%M:%S" >> /tmp/if.log
echo "INTERFACE : ${interface}" >> /tmp/if.log
echo "EVENT : ${event}" >> /tmp/if.log

if [ "${interface}" = "${wlan}" ]; then
    if [ "${event}" = "up" ]; then
        if [ -z "$(ip addr  | grep "${eth}")" ]; then
            vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
            if [ ! -z "${vip_dev}" -a "${vip_dev}" != "${wlan}" ]; then
                ip addr delete ${vip} dev ${vip_dev}
                ip addr add ${vip} dev ${wlan}
            fi
            vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
            if [ -z "${vip_dev}" ]; then
                ip addr add ${vip} dev ${wlan}
            fi
        fi
    fi
elif [ "${interface}" = "${eth}" ]; then
       if [ "${event}" = "up" ]; then
        vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
        if [ ! -z "${vip_dev}" -a "${vip_dev}" != "${eth}" ]; then
            ip addr delete ${vip} dev ${vip_dev}
            ip addr add ${vip} dev ${eth}
        fi
        vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
        if [ -z "${vip_dev}" ]; then
            ip addr add ${vip} dev ${eth}
        fi
    elif [ "${event}" = "down" ]; then
        vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
        if [ ! -z "${vip_dev}" -a "${vip_dev}" != "${wlan}" ]; then
            ip addr delete ${vip} dev ${vip_dev}
            ip addr add ${vip} dev ${wlan}
        fi
        vip_dev="$(ip addr | grep "${vip}" | sed -e 's/^.* //g')"
        if [ -z "${vip_dev}" ]; then
            ip addr add ${vip} dev ${wlan}
        fi
    fi
fi

 

 

신고공유스크랩
1
profile image 1등
너굴맨봇 2023.12.27. 22:38
안녕하세요, 스톤콜드님.😊
 

좋은답변을 받기위해서는 좋은 질문이 필요합니다.

유의할점⚠️

  • 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
  • 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
  • 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
    • (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)

질문방법🙏

자신의 상황을 최대한 자세히 설명해주세요.

상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다. 

ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.

*가능하면 최신버전 OS/SW를 이용해주세요

 

답변에대한 피드백을 주세요.

정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.

이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story