로드 밸런싱 ppp 연결을 통한 정책 라우팅

로드 밸런싱 ppp 연결을 통한 정책 라우팅

이것은 Debian 6.0을 사용한 설정입니다. 6. 8개의 3G 모뎀을 사용하여 프록시 서버 및 로드 밸런서 역할을 합니다.

ppp가 전화 접속에 연결할 때마다 기본 게이트웨이를 차지하는데 이는 문제가 되지 않지만 문제를 일으키기도 합니다. 이것이 괜찮은 이유는 우분투에서는 기본적으로 이 작업을 수행하지 않는다는 것을 알았기 때문입니다. 기본적으로 ethX 게이트웨이는 변경되지 않은 상태로 유지됩니다. ppp 옵션 파일에 추가할 수도 있었지만 replacedefaultrouteUbuntu의 iptables 문제로 인해 대신 Debian을 사용하게 되었습니다.

이제 LAN의 다른 호스트에는 ping을 보낼 수 없지만 다른 호스트에서는 나에게 ping을 보낼 수 있습니다. 또한 외부와의 연결이 끊어졌습니다. 액세스할 수 있는 유일한 방법은 LAN 내부의 다른 컴퓨터를 통해서였습니다. 그리고 LAN의 모든 호스트는 프록시를 사용할 수 있습니다.

나는 다음과 같은 파일을 추가하면e1그리고 복사

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126
default via 192.168.2.3 dev eth0

기본 테이블에서 테이블 e1을 입력하고 다음을 실행합니다.

ip rule add table e1

작동하지만 이제 모든 연결이 eth0 인터페이스를 통해 흐르기 때문에 내가 원하는 것은 아닙니다.

외부에서 연결을 복원하고 로컬 시스템과 통신하려면 어떻게 해야 합니까? 그러나 LAN의 모든 트래픽은 여전히 ​​ppp 링크를 거쳐야 합니다.

root@proxy:~# iptables -L OUTPUT -t mangle -v
Chain OUTPUT (policy ACCEPT 433K packets, 217M bytes)
pkts bytes target     prot opt in     out     source               destination
433K  217M CONNMARK   all  --  any    any     anywhere             anywhere            CONNMARK restore
 929 61011 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 MARK set 0x1
 929 61721 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 1 MARK set 0x2
 929 61461 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 2 MARK set 0x3
 929 61438 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 3 MARK set 0x4
 929 61530 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 4 MARK set 0x5
 929 61022 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 5 MARK set 0x6
 929 61738 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 6 MARK set 0x7
 928 61224 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 7 MARK set 0x8
433K  217M CONNMARK   all  --  any    any     anywhere             anywhere            CONNMARK save


root@proxy:~# iptables -L POSTROUTING -t nat -v
Chain POSTROUTING (policy ACCEPT 285 packets, 18881 bytes)
 pkts bytes target     prot opt in     out     source               destination
  743 49005 MASQUERADE  all  --  any    ppp0    anywhere             anywhere
  705 47291 MASQUERADE  all  --  any    ppp1    anywhere             anywhere
  679 45581 MASQUERADE  all  --  any    ppp2    anywhere             anywhere
  679 45598 MASQUERADE  all  --  any    ppp3    anywhere             anywhere
  670 45177 MASQUERADE  all  --  any    ppp4    anywhere             anywhere
  638 42447 MASQUERADE  all  --  any    ppp5    anywhere             anywhere
  724 48671 MASQUERADE  all  --  any    ppp6    anywhere             anywhere
  679 45182 MASQUERADE  all  --  any    ppp7    anywhere             anywhere
root@proxy:~#

root@proxy:~# ip rule
0:      from all lookup local
32758:  from all fwmark 0x8 lookup d8
32759:  from all fwmark 0x7 lookup d7
32760:  from all fwmark 0x6 lookup d6
32761:  from all fwmark 0x5 lookup d5
32762:  from all fwmark 0x4 lookup d4
32763:  from all fwmark 0x3 lookup d3
32764:  from all fwmark 0x2 lookup d2
32765:  from all fwmark 0x1 lookup d1
32766:  from all lookup main
32767:  from all lookup default

root@proxy:~# ip ro sh t d1
default via 10.64.64.64 dev ppp0
root@proxy:~# ip ro sh t d2
default via 10.64.64.65 dev ppp1
root@proxy:~# ip ro sh t d3
default via 10.64.64.66 dev ppp2
root@proxy:~# ip ro sh t d4
default via 10.64.64.67 dev ppp3
root@proxy:~# ip ro sh t d5
default via 10.64.64.68 dev ppp4
root@proxy:~# ip ro sh t d6
default via 10.64.64.69 dev ppp5
root@proxy:~# ip ro sh t d7
default via 10.64.64.70 dev ppp6
root@proxy:~# ip ro sh t d8
default via 10.64.64.71 dev ppp7


root@proxy:~# ip ro
10.64.64.67 dev ppp3  proto kernel  scope link  src 10.90.33.221
10.64.64.66 dev ppp2  proto kernel  scope link  src 10.18.11.90
10.64.64.65 dev ppp1  proto kernel  scope link  src 10.90.14.235
10.64.64.64 dev ppp0  proto kernel  scope link  src 10.18.27.226
10.64.64.71 dev ppp7  proto kernel  scope link  src 172.22.201.81
10.64.64.70 dev ppp6  proto kernel  scope link  src 10.80.131.6
10.64.64.69 dev ppp5  proto kernel  scope link  src 172.20.17.183
10.64.64.68 dev ppp4  proto kernel  scope link  src 10.80.61.34
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126
default via 192.168.2.3 dev eth0
root@proxy:~#

당신이 나에게 몇 가지 아이디어를 줄 수 있다면 매우 감사하겠습니다.

.

답변1

  1. 빌어먹을 SSH 포트를 라우터에 전달하면 외부에서의 액세스는 괜찮습니다.
  2. iptables에서 이 명령을 실행한 후에만 192.168.2.0/24 네트워크의 다른 컴퓨터와 통신할 수 있습니다. 이 경우에는 .253(로컬 DNS)만 나와 대화하기를 원합니다(.126).

    iptables -A OUTPUT -t mangle -s 192.168.2.126 -d 192.168.2.253 -j MARK --set-mark 16

iptables 목록에는 기본적으로 모든 새로운 연결을 표시하고 라우팅 결정을 내린 다음 POSTROUTING 체인을 통과해야 한다는 몇 가지 규칙이 있습니다. 이제 특정 기준(태그 표시 16)으로 패킷을 표시하므로 IP 규칙은 fwmark와 일치하지 않으므로 IP 규칙의 기본 기본 테이블에서 유일한 경로를 찾을 수 있습니다.

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126  metric 1 

답변2

OUTPUT에서는 대상 주소가 LAN 내에 있더라도 각각의 새 패킷을 표시합니다.

ppp 라우팅 테이블에는 기본 항목이 하나만 있습니다. 이는 이 테이블 중 하나에 들어가는 모든 패킷이 항상 ppp*의 게이트웨이를 통해 라우팅된다는 의미입니다. 패킷의 대상 주소가 LAN에 있더라도 마찬가지입니다. 이는 규칙이 우선 순위가 높아지는 순서대로 평가되고 d[0-8] 테이블이 이전에 시도되기 때문입니다 main.

그래서 당신의 LAN에 대한 핑은 당신의 ppp 장치로 라우팅되고 NAT됩니다...그래서 그것이 작동한다면 그것은 선택된 ppp 게이트웨이가 라우팅 테이블 호스트에 동일한 IP 주소를 가진 또 다른 게이트웨이를 가지고 있기 때문입니다.

LAN으로 이동해야 하는 트래픽이 LAN으로 이동하도록 d[0-8] 테이블 이전에 시도되는 별도의 테이블에 각 LAN 규칙을 넣을 것입니다.

관련 정보