Linux Box L2 스위치를 빠르게 구성/시작하는 방법

Linux Box L2 스위치를 빠르게 구성/시작하는 방법

1Gbit와 10Gbit라는 두 개의 하드웨어 스위치가 있는 완전히 격리된 LAN 192.168.22.0/24가 있습니다. 이전 10Gbit 스위치도 1Gbit를 처리할 수 있으므로 두 스위치를 함께 연결하는 데 문제가 없습니다. 지난 주에 새로운 10Gbit 스위치를 구입했는데 1Gbit를 처리할 수 없습니다. 갑자기 연결이 끊어진 네트워크 부분은 대부분 10Gbit의 서버(DHCP 포함)이고 대부분의 워크스테이션이 1Gbit에 연결되어 있기 때문에 즉시 연결해야 합니다. 운 좋게도 임시로 1/10 Gbit 스위치로 구성할 수 있는 두 부분에 연결된 데비안 리눅스 박스가 있었습니다. 프롬프트를 따랐지만 브리징이 전혀 관찰되지 않았습니다. 예를 들어 arp 테이블에 영향이 없고 wks에서 서버로의 ping이 발생하지 않았습니다. 나는 스크립트를 작성했습니다 :

#!/bin/bash
ip link add name br0 type bridge
ip link set dev  br0 up
ip link set dev eth0 master br0 #1Gb
ip link set dev eth1 master br0 #XGb

몇 가지 질문에 답해주세요:

  • eth0과 eth1이 (동일한) IP 주소를 가질 수 있습니까? 아니면 IP 주소가 br0을 얻을 수 있나요?
  • iptables를 비활성화/새로 고침/제거해야 합니까? (iptables는 사용하지 않습니다)
  • 설정해야 하는 "전달" 활성화 비트가 있습니까?
  • 이러한 소프트웨어 스위치가 실제로 DHCP 브로드캐스트를 전달할 수 있습니까?

Linux 상자에서 실행 중인 작업이 있으므로 /etc/network/interfaces 구성 방법을 테스트하기 위한 힌트가 없습니다. NetworkManager를 비활성화해서 다행입니다. 재부팅할 수 없습니다.

어떤 도움이나 조언이라도 환영합니다. 월요일 아침까지 LAN으로 다시 돌아오겠습니다.

답변1

단순화를 위해 이더넷과 IPv4에 대해서만 설명하겠습니다(IPv6에도 동일하게 적용됨).IP6 테이블). 다른 사람이 이 질문에 관심이 있는 경우를 대비하여 나는 때때로 필요한 것보다 더 자세히 각 요점을 다루려고 노력합니다.

  1. 설정

    완전성을 위해 이전에 수행되지 않은 경우 초기 설정에 다음을 추가해야 합니다.

    ip link set eth0 up
    ip link set eth1 up
    

    브리지 포트를 열지 않으면 활성 브리지는 프레임을 받거나 보내지 않습니다. 이것이 문제의 원인일 수 있습니다.

  2. 브리지 포트 및 레이어 3

    긴 이야기 짧게: 가장 간단한 설정을 위해 IP 및 라우팅 구성은 브리지 인터페이스에 있어야 하며 br0브리지 인터페이스에만 있어야 합니다. 이는 브리징 기능이 아닌 호스트의 IP 연결에만 영향을 미칩니다. 따라서 IP가 이전에 설정되어 있는 경우이더넷 0당신은 그것들을 적용해야합니다br0대신에. 이렇게 하지 않으면 시스템에 대한 IP 연결이 차단됩니다(브리징은 아님).

    참고로 ARP는 로컬 시스템용이며 특별한 방식으로 브리지가 아닌 ARP 프로토콜에 의해 처리됩니다. 브리지에서 유용한 것은 FDB(포워딩 데이터베이스 항목)를 살펴보는 것입니다.

    로컬 시스템 ARP 상태:

    ip neighbour show
    

    변경사항 모니터링:

    ip monitor neigh
    

    브리지 MAC 전달 상태:

    bridge fdb show br br0
    

    변경사항 모니터링:

    bridge monitor fdb
    

    추가 사용 등 다른 설정도 가능합니다.와이즈한 쌍의 인터페이스, 한쪽 끝에는 IP가 있고 다른 쪽 끝에는 세 번째 브리지 포트 역할을 합니다. 브리지에는 IP가 없으므로 브리지는 브리징만 수행하고 레이어 3에는 참여하지 않습니다. 하지만 올바르게 설정하려면 시간이 오래 걸립니다(예: 기본적으로 임의의 MAC 주소를 사용하는 것 등).

    인터페이스가 브리지 포트가 되면(마스터 포트로 브리지됨) 해당 레이어 3 정보는 무시됩니다. 해당 인터페이스에 구성된 IP(있는 경우)는 사용할 수 없게 됩니다. 주목할만한 예외는 브리지 이름이 있는 특수 암시적 셀프 브리지 포트이므로 여기에서 br0IP를 할당하면 레이어 2에서 프레임을 교환하는 것 외에도 브리지도 작동합니다. 이렇게 하지 않으면 교환만 가능합니다.

  3. iptables/netfilter는 브리지 레이어와 상호 작용합니다.

    긴 이야기 짧게: 사용하지 않는 경우iptables네트워크 네임스페이스(컨테이너)에 포함된 규칙이므로 특정 규칙이 존재하는지 여부에 관계없이 아무것도 수행하거나 신경 쓸 필요가 없습니다.iptables관련 모듈이 로드되었습니다. 자세한 답변은 다음과 같습니다...

    레이어 2(이더넷 브리지)의 프레임 필터링(또는 파괴 등)은 다음과 같이 수행되어야 합니다.ebtables, 레이어 3의 IP 패킷 필터링은 통과해야 합니다.iptables. 그래서iptables프레임은 일반적으로 표시되지 않아야 하며(로컬 시스템을 대상으로 하고 IP 패킷으로 레이어 3에 도착하지 않는 한) 브리지 프레임과 상호 작용하지 않습니다.

    ebtables직접 접근 불가 등 더 제한적웹 필터~의연결하다전부는 아니다확장하다사용 가능iptables. 이것이 없으면 좋은 레이어 2 방화벽(라우터가 아닌 스위치 역할을 함)을 구현하기가 어렵습니다. 이것이 바로 브리징 코드 호출을 허용하는 특수 모드가 있는 이유입니다.iptables(프레임은 일시적으로 IP 패킷으로 변경됩니다.iptables사용법) 제외ebtables. 그 설명은브리지 네트워크 필터란 무엇입니까?그리고Linux 기반 브리지의 ebtables/iptables 상호 작용, 상호작용의 가장 두드러진 예7. 프레임/패킷 패스iptablesPREROUTING, FORWARD 및 POSTROUTING 체인. 이것일반 네트워크의 Netfilter 및 패킷 흐름회로도의 링크 레이어 측면에서는 파란색(ebtables) 및 녹색(iptables).

    패턴은 다음을 통해 로드됩니다.br_netfilter모듈(예 modprobe br_netfilter: )을 사용하지만iptables규칙과신체 발달Match가 자동으로 로드됩니다.

    이 모듈이 로드되면(그리고 기본 sysctl이 여전히 거기에 있습니다 net.bridge.bridge-nf-call-iptables=1:)iptables특히 브리지에 IP가 있는 경우 브리지와 상호 작용합니다. 이는 네트워크 계층뿐만 아니라 브리지 계층에서 추가 시간이 수행되기 때문입니다. 그래서 이전 예에 따르면제7장, LAN 192.168.22.0/24를 브리징하고 NAT를 통해 인터넷에 액세스하기 위해 브리지에 속하지 않은 세 번째 인터페이스도 있는 경우 이 규칙(단독으로 사용되는 경우):

    iptables -t nat -A POSTROUTING -s 192.168.22.0/24 -j MASQUERADE
    

    NAT 외에도라우팅됨외부로의 트래픽도 NAT가 됩니다.브리지된트래픽: 각 시스템은브리지된프레임은 원래 IP 대신 브리지의 IP를 소스로 갖게 됩니다. 이것이 바로 일반적으로 다음과 같이 작성되는 이유입니다(LXC와 같은 응용 프로그램에서 설정한 것을 볼 수 있습니다).

    iptables -t nat -A POSTROUTING -s 192.168.22.0/24 ! -d 192.168.22.0/24 -j MASQUERADE
    

    예, 사용할 수도 있습니다.iptables하지만 사용하지 않도록 주의해야 합니다브릿지NF(이것br_netfilter모듈) 또는 규칙을 조정하세요. 네트워킹을 다루는 일부 애플리케이션, 특히 컨테이너(Docker, Kubernetes...)와 관련된 애플리케이션은 이를 활성화할 수 있습니다.

    네트워크 네임스페이스에 대한 참고 사항:브릿지NF~ 할 것이다곧 모든 네임스페이스는, 그러나 아직은 그렇지 않습니다. 모듈을 로드하고 옵션을 비활성화한 후 브리지별 옵션을 설정할 수도 있지만 현재는 초기 네임스페이스에서만 제대로 작동할 것으로 생각됩니다. 모듈 자동 로딩은 모든 네트워크 네임스페이스에서 트리거될 수도 있습니다(다음을 사용하여).신체 발달)은 다른 모든 네트워크 네임스페이스(초기 네임스페이스 포함)에 영향을 미치므로 이에 대한 규칙을 항상 준비해야 합니다.

    참고 2: 한 번브리지 연결 추적사용 가능nftables, 사용할 이유가 없어야 합니다.브릿지NF.

  4. 앞으로

    기본적으로 다른 옵션이 없으면 브리지는 포트 및 자체 시작 후 몇 초 후에 프레임을 전달합니다(그리고 STP를 처리하지 않습니다). 따라서 루프가 불가능하다는 것을 알고 있다면 준비가 되어 있어야 합니다.

  5. 동적 호스트 구성 프로토콜

    예, 브리지는 DHCP 쿼리와 응답을 전달해야 합니다. 여기서 브리지 수준에는 특별한 것이 없습니다.

  6. 여러 가지 잡다한

    • 가상 LAN

      귀하의 설정에는 VLAN ID가 어디에도 없는 것 같으므로 VLAN과 관련된 특별한 사항은 필요하지 않습니다. 알려드리자면, VLAN 태그가 지정된 프레임이 관련된 경우 이를 올바르게 처리하려면 브리지에서 추가 설정이 필요합니다( 로 시작한 ip link set dev br0 type bridge vlan_filtering 1다음 적절한 bridge vlan ...명령을 실행).

    • 문제 해결

      너는 달려야 해TCP 덤프각 인터페이스에는 다음과 같은 내용이 있습니다.

      tcpdump -e -l -n -s0 -i eth0
      tcpdump -e -l -n -s0 -i br0
      tcpdump -e -l -n -s0 -i eth1
      

      또한 무슨 일이 일어나고 있는지 이해하는 데 도움이됩니다.

    • 구성

      당신이 사용하는 경우위 아래라면데비안에서의 구성, 설치브리징 도구더 이상 사용되지 않는 명령이 포함된 패키지brctl또한 추가됩니다브리지 도구 인터페이스브리지 구성을 위한 후크상호 작용제전. 간단한 브리지 구성에는 충분합니다.

관련 정보