라우팅에 듀얼 NIC를 사용하도록 FreePBX를 얻을 수 없습니다.

라우팅에 듀얼 NIC를 사용하도록 FreePBX를 얻을 수 없습니다.

FreePBX 서버가 있고 두 번째 실제 인터페이스를 추가해야 합니다. 그림에 표시된 것처럼 eth0과 eth1 모두 라우팅 가능한 IP 주소를 가지고 있습니다. 빠른 Google 검색에 따르면 두 번째 주소를 설정하는 것은 비교적 간단합니다.

https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System

  1. /etc/iproute2/rt_tables를 편집하고 "200초" 항목을 추가합니다.

  2. "두 번째"라는 테이블에 대한 경로가 추가되었습니다.

    ip route add ip.subnet.on.eth1/27 dev eth1 src ip.address.on.eth1 table second
    ip route add default via router.ip.for.eth1 dev eth1 table second
    

(여기서 "ip.subnet.on.eth1" "ip.address.on.eth1" 및 "router.ip.for.eth1"은 필수 주소입니다.)

  1. 소스 라우팅을 통해 올바른 인터페이스를 통해 트래픽을 보내는 규칙이 추가되었습니다.

    ip rule add from ip.address.on.eth1/32 table second
    ip rule add to ip.address.on.eth1/32 table second
    

이로 인해 부분적인 성공을 거두었습니다. 이제 서버의 두 번째 IP 주소로 라우팅하여 일반 요청(예: icmp, sshd, apache 등)에 즉시 응답할 수 있었습니다.

하지만 Asterisk에서 요구하는 udp 서비스에서는 전혀 작동하지 않습니다. 모든 클라이언트는 문제 없이 eth0의 "일반" IP 주소에 연결할 수 있습니다. 그러나 eth1의 IP에 연결하려고 하면 클라이언트가 시간 초과됩니다.

sip를 통해 tcp를 허용하도록 서버를 설정한 다음 로그인을 허용하려고 시도했지만 rtp(음성) 트래픽도 udp이기 때문에 결국 작동하지 않았습니다.

이제 유사한 설정이 작동합니다. 예를 들어 두 번째 eth1 장치가 전역적으로 라우팅될 필요가 없는 경우입니다. 내부 LAN의 경우. 따라서 pbx가 eth0에 실제 IP를 갖고 eth1에 개인 IP를 갖고 있다면 통합 라우팅 테이블만 사용하고 모든 것이 잘 작동할 것입니다.

Sip 서버로 들어오고 나가는 트래픽을 차단하는 방화벽이 없다는 것을 확실히 확인할 수 있습니다. 실제로 모든 tcp 및 udp 트래픽이 모든 sip 클라이언트 서브넷으로 전송되도록 허용하는 명시적인 항목 세트도 있는데, 모든 fall2ban 및 기타 헛소리를 우회합니다.

추신. 제가 현학적으로 말하지 않는다면, 최종 목표는 eth0과 eth1이라는 두 개의 인터페이스에서 Freepbx/별표를 실행하는 것입니다. 두 인터페이스 모두 완전히 라우팅 가능한 실제 IP 주소를 가지고 있습니다. 현재로서는 eth0만 사용할 수 있습니다.

관련 정보