보조 라우터 / ISP에 Linux 시스템 연결 : 라우팅을 올바르게 설정하는 방법? length 0 13:35:19.788841 IP i.j.k.l.57512

요약:

기존 네트워크 설정에 보조 ISP를 추가 할 때 (라우팅 추정) 문제가 있습니다. 들어오는 트래픽 Router1은 응답하지 않지만 로컬 트래픽 및 들어오는 Router0것은 정상적으로 작동합니다.

작업을 통해 들어오는 트래픽을 만들면서 현재 제대로 작동하는 부품을 유지하려면 어떻게 Router1합니까?

동화:

나는 상황의 필수 요소로 아래 다이어그램을 스케치했습니다 (실제로는 각 LAN에 더 많은 장치가 있지만 중요하지는 않습니다).

이것은 상황입니다.

  • 두 개의 내부 네트워크가 있습니다 : LAN0is 192.168.x.0/24and LAN1is 192.168.y.0/24. 둘 다 내부 트래픽에 적합합니다 (예 : cURL을 사용하는 http ).
  • LAN0항상를 통해 연결되어 Router0ISP0받는 사람 Internet.
  • LAN1항상 있었다 Router1, 그러나 지금 통해 연결되어 ISP1받는 사람 Internet.
  • LAN0기본 경로가있는 컴퓨터 만 Router0나가고 들어오는 트래픽에 적합합니다.
  • LAN1기본 경로가있는 컴퓨터 만 Router1나가고 들어오는 트래픽에 적합합니다.
  • 내부 트래픽에 LAN0LAN1항상 벌금을 일했다.
  • 을 통해 들어오는 트래픽 Router1에 대한이 WindowsB제대로 도착 : 나는에서 RDP를 통해 연결할 수 있습니다 WindowsC.
  • 를 통해 들어오는 트래픽 Router1에 대한 LinuxB(에 따라 도착 tcpdump를 ) 아니지만으로 다시 대답 curl http://e.f.g.h전면 데크의 LinuxCA를 쇼 에 tcpdump를 LinuxB 보여줍니다 :

받는 항 – 이것은 패킷만을 도시 tcpdump에 출력 형식 -가 SYN의 플래그 세트 :

LinuxB:/tmp/LinuxB.eth1.80 # tcpdump -i eth1 'port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:35:19.489779 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047182 ecr 0,sackOK,eol], length 0
13:35:19.788841 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047478 ecr 0,sackOK,eol], length 0
13:35:19.888835 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047578 ecr 0,sackOK,eol], length 0
13:35:19.989412 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047678 ecr 0,sackOK,eol], length 0
13:35:20.089685 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047778 ecr 0,sackOK,eol], length 0
13:35:20.190836 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047877 ecr 0,sackOK,eol], length 0
13:35:20.392123 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287048072 ecr 0,sackOK,eol], length 0
13:35:20.693692 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:21.197162 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:22.204134 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:24.115961 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:27.852374 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:31.967049 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0

이것은 LinuxB라우팅 테이블입니다.

LinuxB:/tmp/LinuxB.eth1.80 # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.x.1     0.0.0.0         UG    0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
link-local      *               255.255.0.0     U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth1

에서 RDP를 통해 연결 이후 WindowsCWindowsB작품 벌금,이 참으로 라우팅 문제가 다시 시작합니다. 이것은 WindowsB라우팅 테이블입니다.

C:\temp>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 29 35 77 e1 ...... AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
0x3 ...00 0c 29 35 77 eb ...... VMware Accelerated AMD PCNet Adapter - Packet Scheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.x.1     192.168.x.4      10
          0.0.0.0          0.0.0.0      192.168.y.1     192.168.y.4       5
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.x.0    255.255.255.0      192.168.x.4     192.168.x.4      10
      192.168.x.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.x.255  255.255.255.255      192.168.x.4     192.168.x.4      10
      192.168.y.0    255.255.255.0      192.168.y.4     192.168.y.4      10
      192.168.y.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.y.255  255.255.255.255      192.168.y.4     192.168.y.4      10
        224.0.0.0        240.0.0.0      192.168.x.4     192.168.x.4      10
        224.0.0.0        240.0.0.0      192.168.y.4     192.168.y.4      10
  255.255.255.255  255.255.255.255      192.168.x.4     192.168.x.4       1
  255.255.255.255  255.255.255.255      192.168.y.4     192.168.y.4       1
Default Gateway:       192.168.y.1
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
          0.0.0.0          0.0.0.0      192.168.y.1       5
          0.0.0.0          0.0.0.0      192.168.x.1      10

어떻게 라우팅 LinuxB을 다음과 같이 할 수 있습니까?

  • 에 기본 경로를 유지 LinuxB192.168.x.1나가는 트래픽을 사용하여 유지되도록 Router0/ISP0
  • 에서 오는 들어오는 요청에 응답 유지 LAN0에를LAN0
  • 에서 오는 들어오는 요청에 응답 유지 LAN1에를LAN1
  • 를 통해 Router0( a.b.c.d/ 192.168.x.1)을 통해 수신 요청에 계속 응답192.168.x.1
  • 다음을 통해 Router1( e.f.g.h/ 192.168.y.1)를 통해 수신 요청에 응답하기 시작합니다.192.168.y.1
  • 보너스 : Router1페일 오버 또는로드 밸런스Router0

추신:

아래PNG 이미지 는 무료 온라인 PlantUML 엔진을 통해 UML 텍스트 로 생성됩니다 . 원본 UML 텍스트를 보려면 PNG 이미지 링크 를이 PlantUML 양식에 붙여 넣은 다음를 누릅니다 .Submit

여기에 이미지 설명을 입력하십시오



답변

오래 전에 그런 일을하기위한 쉘 스크립트가 있었지만 죄송합니다. 그래서 나는 그때 구현 한 솔루션에 대한 포인터 만 줄 수 있습니다. 나는 주로 메모리에서 글을 쓰고 있으므로 일부 예제가 누락되었습니다.

  1. 업 링크 당 하나의 라우팅 테이블이 있습니다 (ip route … table 101, ip route … table 102). / etc / iproute2 / rt_tables에 들어갑니다.

    101 ISP1 102 ISP2

    해당 테이블도 설정해야합니다.

    IP 경로 $ Gateway1 dev $ Interface1 테이블 isp1을 통해 기본값 추가 IP 경로 $ Gateway2 dev $ Interface2 테이블 isp2를 통해 기본값 추가

    # 기본 테이블을 잊지 마세요 :

    IP 경로는 $ DefaultGateway dev $ DefaultInterface를 통해 기본값을 추가합니다

  2. iptables 연결 추적 사용 (modprobe nf_conntrack)

  3. 새로 들어오는 연결에 대한 iptables 규칙을 설정하여 -j에 패킷을 표시합니다 (예 : 0x201, 0x202)
  4. 인터페이스가 올바른 라우팅 테이블을 사용하는 동안 트래픽이 나가도록 IP 규칙을 설정하십시오.

    $ Ip1 테이블에서 ip 규칙 추가 isp1 $ Ip2 테이블에서 ip 규칙 추가 isp2

  5. “0x201로 표시된 패킷은 라우팅 테이블 201을 조회해야합니다”라는 IP 규칙 (ip 규칙 추가 …)을 설정합니다. 이는 모든 업 링크마다 하나의 규칙입니다.

모든 것을 갖추고 있으면 모든 업 링크와의 연결을 수신하고 시작할 수 있으며 발신 연결의 균형을 유지할 수 있어야합니다.

이것이 기본입니다. Iptables + “ip route”+ “ip rule”을 사용하면 좋습니다.