내 컴퓨터(Ubuntu 16.04)는 이더넷 케이블을 통해 홈 네트워크에 연결되어 있습니다. 다른 방으로 이동해서 Wifi를 사용하고 싶어요. 전환이 최대한 원활하게 진행되기를 바랍니다(예: VPN 연결 끊김 방지). Wi-Fi와 이더넷에 연결할 수 있지만, 이때 이더넷 앱을 연결 해제하면 연결 오류가 발생합니다.
그래서 전선 연결을 끊기 전에 트래픽이 Wi-Fi 인터페이스를 사용하도록 강제하는 방법이 필요할 것 같습니다. 두 인터페이스가 모두 활성화되면 ip route
다음이 표시됩니다.
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.0.254 dev wlp4s0 proto static metric 600
192.168.0.0/24 dev enp0s31f6 proto kernel scope link src 192.168.0.43 metric 100
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.7 metric 600
내가 사용하는 경우:
ip route del default via 192.168.0.254 dev enp0s31f6
트래픽이 크롤링 속도로 느려졌습니다.
그래서 조금 더 미묘하게 두 인터페이스를 모두 활성 상태로 유지하되 Wi-Fi 인터페이스를 선호하는 인터페이스로 만들어야 할 것 같습니다. 나는 이것이 이더넷 인터페이스보다 Wi-Fi 인터페이스에서 더 작은 메트릭을 가짐으로써 달성된다고 믿습니다. 그러나 이렇게 하면:
ip route change default via 192.168.0.254 dev enp0s31f6 proto static metric 600
나는 얻다:
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.0.254 dev enp0s31f6 proto static metric 600
따라서 이 명령은 모든 인터페이스를 지정된 측정항목으로 바꾸는 것으로 나타납니다. 100이나 600이 아닌 다른 지표 값을 사용하려고 하면 다음과 같은 결과가 나타납니다.
RTNETLINK answers: No such file or directory
물론 Wi-Fi를 사용하고 이더넷에 다시 연결하면 트래픽이 원활하게 이더넷으로 전환됩니다.
그렇다면 내 가정 중 어느 것이 잘못되었나요? 해결책이 있나요?
답변1
Hauck이 언급한 솔루션은 하나의 접근 방식입니다. 이 접근 방식의 단점은 모든 연결이 "드레인"될 때까지 (유선) 이더넷 인터페이스를 연결된 상태로 유지해야 한다는 것입니다.
더 원활하지만 더 복잡한 또 다른 접근 방식(예를 들어 라우팅 메트릭에 따르면 사용 중인 NetworkManager를 사용하여 이 작업을 수행할 수 있는지 지금은 알 수 없음)은 바인딩을 사용하여 인터페이스를 함께 바인딩하는 것입니다. 이렇게 하면 유선 이더넷 연결이 분리되면 연결이 자동으로 WiFi를 사용하도록 장애 조치됩니다.
내 답변에는 WiFi 및 유선 연결 본딩을 구성하는 방법에 대한 자세한 설명이 나와 있습니다.WiFi 포트를 중복 링크로 사용.
답변2
이더넷 인터페이스를 비워야 합니다. iptables
고급 라우팅을 사용하면 이 작업을 수행 할 수 있습니다 . 그리고
iptables -m conntrack --ctstate NEW
OUTPUT 체인에서 새로운 연결을 찾아 로 표시할 수 있습니다 --set-mark
.
이를 사용하여 ip rule
WiFi를 통해 이 태그가 포함된 패킷을 라우팅할 수 있습니다.
잠시 후 트래픽의 전부 또는 대부분이 중단 없이 Wi-Fi를 사용하게 됩니다.
라우터를 제어하는 경우 SNAT를 사용하여 지속적인 연결을 저장할 수도 있습니다.