다중 WAN CentOS 라우터 - Xfinity Connect는 Xfinicky입니다. 다른 모든 WAN 연결은 잘 작동합니다.

다중 WAN CentOS 라우터 - Xfinity Connect는 Xfinicky입니다. 다른 모든 WAN 연결은 잘 작동합니다.

이 문제는 며칠 동안 나를 미치게 만들었습니다. 저는 직원들의 집에 배포할 미니 라우터/VPN 클라이언트 장치의 프로토타입을 작업 중입니다. 현재 저는 가족 사정으로 인해 실제로 다른 주에서 원격으로 일하고 있는데 지금이 그렇게 하기 좋은 시기라고 생각했습니다.

라우터에는 최종 사용자에 대한 연결이 하나 이상 있습니다(이 경우내 거) 인터넷은 4G/5G 셀룰러 연결을 통해 유선으로 연결되고 백업됩니다.

질문: 3개의 WAN 인터페이스가 있습니다(아래 참조). 그 중 두 개는 완벽하게 작동합니다. Xfinity 라우터 연결이 때때로 허용되지 않음어느내 장치의 트래픽입니다. 항상 Xfinity 라우터 자체에 ping을 보낼 수 있습니다. 인터페이스(예: ifdown ethwan0 && ifup ethwan1)를 다시 시작하면 작동하는 경우도 있지만 그렇지 않은 경우도 있습니다. 일단 작동이 시작되면(예: 공용 인터넷으로 트래픽 전송) 무기한으로 잘 작동합니다.

두 개의 다른 WAN 연결 사이에서 앞뒤로 실패할 수 있습니다(아래 사용자 정의 스크립트 사용). Xfinity 연결로 장애 조치하면 대부분의 경우 트래픽이 발생하지 않습니다. (내 라우터를 통한 SNAT도 아니고 내 라우터에서 직접 연결도 아닙니다.)

Xfinity 라우터의 관리 인터페이스에서 "오프라인 장치" 아래에 내 라우터의 IP/MAC가 나열됩니다. 이 시점에서 실제로 라우터 인터페이스에서 Xfinity의 IP를 ping할 수 있습니다. 이 맥락에서 "오프라인"이 무엇을 의미하는지 잘 모르겠습니다.

편집하다: 100% 확신할 수는 없지만 문제가 Xfinity 장치에 있는 경우:

Technicolor TC8305C
Boot Version: 2.1.8_Technicolor
Core Version: 01.E6.01.22.59
HW Version: 1.5

나는 4개의 eth 포트와 1개의 Wi-Fi 카드를 갖춘 흰색 라벨 팬리스 미니 컴퓨터를 가지고 있습니다. CentOS 7을 실행 중이며 [이 강의를 생략해 주세요 :)] 포트는 다음과 같습니다(udev/rules.d에서 이름이 변경됨).

ethwan0- Xfinity 케이블 모뎀/라우터(Xfinity 장치는아니요브리지 모드 - NAT'd)

ethwan1- T-Mobile 게이트웨이 장치(NAT도 있음)

ethint - VPN 반대편의 시스템에 접근하기 위해 사용자의 네트워크에 내부 연결

ethgst - 사용자의 가족이나 다른 사람의 게스트 연결. 인터넷에만 접속할 수 있습니다.

ethwifi- Verizon Hotspot(과도하지만 테스트 중입니다).

NetworkManager와 방화벽이 있습니다.장애가 있는저는 iptables-servicesiptables 스크립트를 사용하는 다른 중앙 집중식 라우터가 많이 있으므로 일관성을 위해 사용하고 있습니다. selinux장애가 있는.

ifcfg-ethwan0:

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=no
NAME=ethwan1
DEVICE=ethwan1
ONBOOT=yes
IPADDR=192.168.242.12
PREFIX=24

ifcfg-ethwan1:

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=no
NAME=ethwan0
DEVICE=ethwan0
ONBOOT=yes
IPADDR=192.168.38.1
PREFIX=24

ifcfg-ethwifi:

MODE=Managed
KEY_MGMT=WPA-PSK
TYPE=Wireless
BOOTPROTO=static
DEFROUTE=no
NAME=ethwifi
DEVICE=ethwifi
ONBOOT=yes
IPADDR=192.168.97.245
PREFIX=24

노트:이 연결은 잘 작동하고 문제가 되지 않으므로 wpa_supplicant 구성 등을 생략했습니다.

iptables구성:

*nat
-A POSTROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT
-A POSTROUTING -s 10.38.168.0/24 -d 192.168.0.0/16 -j ACCEPT
-A POSTROUTING -s 10.38.168.0/24 -d 10.0.0.0/8 -j ACCEPT
-A POSTROUTING -s 10.38.168.0/24 -m state --state NEW -j SNAT --to-source 192.168.242.12
COMMIT
*filter
:OUTPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 10.38.100.0/22 -d 10.38.168.0/24 -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state NEW -s 10.38.168.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
:INPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.38.168.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

failover-conn.bsh [interface]:

#!/bin/bash

# Arg $1 is the interface name to fail over to (e.g. ethwan0)

declare -A snat_src
declare -A gateway
declare -A cidr

snat_src[ethwan0]="192.168.242.12"
gateway[ethwan0]="192.168.242.1"

snat_src[ethwan1]="192.168.38.1"
gateway[ethwan1]="192.168.38.11"

snat_src[ethwifi]="192.168.97.245"
gateway[ethwifi]="192.168.97.1"

# Should use awk here but this does work.

snat_line_num=`iptables -t nat -nL --line-numbers |grep SNAT |grep "10\.38\.168\.0\/24" |grep -oP "^[0-9]+"`

# This looks foolish but it's in case a malfunction caused more than one rule to be put in place.. it's happened to me before and this overkill can't hurt.

for whatever in 1 2 3; do

        ip route del default

        iptables -t nat -D POSTROUTING -s 10.38.168.0/24 -m state --state NEW -j SNAT --to-source ${snat_src[ethwan0]}
        iptables -t nat -D POSTROUTING -s 10.38.168.0/24 -m state --state NEW -j SNAT --to-source ${snat_src[ethwan1]}
        iptables -t nat -D POSTROUTING -s 10.38.168.0/24 -m state --state NEW -j SNAT --to-source ${snat_src[ethwifi]}

done

ip route add default via ${gateway[$1]} dev $1

iptables -t nat -I POSTROUTING ${snat_line_num} -s 10.38.168.0/24 -m state --state NEW -j SNAT --to-source ${snat_src[$1]}

conntrack -D

# I thought flushing the ARP cache might cause a re-announce to the Xfinity modem and make it play nice.  I tested with/without this and same result.

ip -s -s neigh flush all

# Without the sleep the VPNs timeout a couple of times before connecting anyway.

sleep 10

systemctl restart openvpn@client-REDACTED0
systemctl restart openvpn@client-REDACTED1

다음은 문제를 설명하는 일련의 명령/결과입니다.

./failover-conn.bsh ethwan0

# ping from router or SNAT'd connection to 8.8.8.8 may return one pong then unlimited timeouts, no responses at all, or it will be fully functional.  VPNs may or may not connect after some time; EVEN IF PINGS ARE FAILING CONSTANTLY..???

ifdown ethwan0 && ifup ethwan0

# pings may or may not get responses or timeout depending on the phase of the moon...?

./failover-conn.bsh ethwan1

# Everything works flawlessly.  Can ping from router, from SNAT'd clients, and VPNs connect.  All traffic transits correctly.

./failover-conn.bsh ethwifi

# Everything works flawlessly.  Can ping from router, from SNAT'd clients, and VPNs connect.  All traffic transits correctly.

./failover-conn.bsh ethwan0

# Same as the first time.  May or may not work.

Xfinity 라우터에서 시도한 작업은 다음과 같습니다.

  • 방화벽/IDS를 완전히 끄십시오(아마도 IDS가 이중 NAT로 인해 짜증을 낼 것이라고 생각했습니다).
  • 내 라우터를 "예약된 장치"로 추가
  • 모든 차단/자녀 보호 기능이 꺼져 있는지 확인했습니다.
  • 다른 노트북을 Xfinity 장치의 Wi-Fi에 직접 연결하고 핑을 열어 두어 라우터를 테스트하는 동안 실제 장치/인터넷 연결이 작동하는지 확인하세요. 이미 일어났습니다.
  • 내 라우터의 IP를 DMZ 호스트로 설정합니다(가능성은 낮지만 ??????이익)
  • 백업 노트북을 Xfinity 게이트웨이에 연결하고 테스트/핑합니다. 라우터가 다운되면 해당 노트북은 항상 정상적으로 작동합니다.
  • Xfinity 라우터 재부팅/재부팅하다연결 복원. (라우터를 다시 시작해도 그렇지 않습니다.)

내 라우터에서 다음을 시도했습니다.

  • VPN 비활성화
  • iptable 비활성화
  • 다른 모든 인터페이스를 비활성화합니다.
  • "일반" 컴퓨터와 같도록 변경 하세요 ifcfg-ethwan0.DEFROUTE=yesGATEWAY=192.168.242.1
  • ethwan0물리적 및 구성 교환 ethwan1. Xfinity 장치는 연결된 포트에 관계없이 신뢰할 수 없었지만 T-Mobile 게이트웨이는 제대로 작동했습니다.
  • 여기저기서 이더넷 케이블을 교체합니다.

나는 이것에 대해 혼란스러워합니다.이 이상한 Xfinity 장치에 연결한 다른 모든 장치는 정상적으로 작동합니다. 이 미니 컴퓨터에 뭔가 문제가 있습니다. 하지만 제가 말했듯이 미니 컴퓨터는 T-Mo 라우터에서도 작동합니다 ethint.

문제 해결 단계를 거쳤으며 여러분 중 누군가 비슷한 문제가 발생하여 해결책을 찾길 바랍니다.

아니면 내 구성이나 접근 방식에서 명백한 얼굴 손바닥 버그를 발견하게 될까요? 그게 다였으면 좋겠어. 그러면 적어도 GiTM이 아니라는 걸 알게 될 겁니다.

미리 감사드립니다! -스콧

관련 정보