배경
eno1
두 개의 인터페이스로 Ubuntu를 실행하는 시스템 이 있고 enp4s0
다음 명령을 사용하여 OVS 브리지를 만들었습니다.
ovs-vsctl add br s1
다음 명령을 사용하여 브리지 eno1
에 두 개의 물리적 인터페이스를 추가했습니다 .enp4s0
ovs-vsctl add-port s1 eno1
ovs-vsctl add-port s1 enp4s0
다음을 사용하여 포트가 추가되었는지 확인했습니다.
ovs-ofctl show s1
두 인터페이스에 연결된 대기열 규칙을 확인하려면 다음을 사용하세요.
ip link
인터페이스에 첨부된 대기열 규칙은 다음과 같습니다.
eno1: fq_codel
enp4s0: mq
나는 그들에 연결된 qdisc를 변경하고 싶었습니다 htb
. 그래서 다음을 사용하여 두 인터페이스 모두에서 변경했습니다.
tc qdisc add dev eno1 root handle 1: htb default 12
tc qdisc add dev enp4s0 root handle 1: htb default 12
질문
두 인터페이스 모두에 대해 qdisc를 변경하는 명령을 실행한 후 htb
를 사용하여 실제로 변경되었음을 확인했습니다 ip link
. 처음에는 모두 htb
내가 원하는 대로 보고했습니다. 그러나 일정 시간이 지나면 자동으로 기본 qdisc( fq_codel
및 qdisc mq
)로 변경됩니다.
htb
나는 그들의 qdisc를 여러 번 변경하고 ip link
변경되었는지 확인하기 위해 수표를 발행해 보았습니다. 매번 짧은 시간 후에 기본 qdisc로 변경됩니다.
질문
eno1
. 및 의 qdisc를 어떻게 영구적으로 enp4s0
변경 합니까 htb
? 짧은 시간 동안 기본 qdisc로 재설정되는 이유는 무엇입니까?
답변1
이제 문제를 해결했으니 질문에 답하겠습니다.
이는 NetworkManager(또는 다른 프로세스)가 인터페이스를 제어할 수 있기 때문에 발생합니다. 주기적으로 인터페이스 구성을 재설정합니다. 이 문제를 해결하려면:
managed
NetworkManager가 어떤 인터페이스를 사용하고 있는지 확인하세요 .
nmcli dev status
위 명령의 출력에 테스트 인터페이스가 나열되면 managed
NetworkManager에 의해 제어됩니다. 그렇지 않으면 나열됩니다 unmanaged
. 나열되어 있으면 managed
두 가지 옵션이 있습니다.
- 옵션 A:NetworkManager 구성 파일을 편집하고
managed
NetworkManager에서 제외할 인터페이스를 추가합니다.
sudo nano /etc/NetworkManager/NetworkManager.conf
conf
파일 에 다음 줄을 추가합니다 .
[keyfile]
unmanaged-devices=mac:00:11:22:33:44:55;mac:66:77:88:99:00:aa
mac 주소를 테스트 인터페이스의 mac 주소로 바꿉니다. 최신 버전의 NetworkManager에서는 인터페이스 이름을 사용하여 이 작업을 수행할 수 있습니다.
[keyfile]
unmanaged-devices=interface-name:eno1,interface-name:enp4s0
네트워크 관리자를 다시 시작합니다.
systemctl stop NetworkManager
systemctl start NetworkManager
이제 인터페이스가 관리되지 않는지 확인합니다.
nmcli dev status
- 옵션 B: 네트워크 관리자를 중지합니다.
현재 세션을 중지합니다(다음 시작 시 다시 시작됨).
systemctl stop NetworkManager
또는 NetworkManager를 비활성화합니다(다음 시작 시 기본적으로 다시 시작되지 않음).
systemctl disable NetworkManager
NetworkManager에서 관리되는 것으로 나열되지 않은 경우 dhclient에서 임대할 수 있습니다. 확인해야 할 사항:
sudo cat /var/lib/dhcp/dhcpd.leases
dhclient가 인터페이스를 임대하는 경우 출력에 나열됩니다. 그렇다면 dhclient의 PID를 찾아 종료하거나 dhclient의 구성 파일을 편집하고 테스트 인터페이스를 제외하십시오.