IP 규칙은 fwmark에 적용되지 않습니다

IP 규칙은 fwmark에 적용되지 않습니다

나는 iptables를 사용하여 패킷을 표시하고 표시에 따라 라우팅하여 여러 DSL 회선을 통해 웹 트래픽의 부하를 분산하려고 합니다. 저는 CentOS 6.6, 커널 2.6.32-504.16.2.el6.x86_64, Iptables v1.4.7을 사용하고 있습니다.

현재 저는 개념 증명으로 다음을 수행했습니다.

iptables -t mangle -A PREROUTING -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -j MARK --set-mark 2

또한 원격 연결을 위한 일부 로깅 및 안전 장치도 제공됩니다.

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j ACCEPT
iptables -t mangle -A OUTPUT -j LOG --log-prefix "output "
iptables -t mangle -A PREROUTING -j LOG --log-prefix "prerouting "

그래서 iptables -t mangle -L -v나한테 줬어

Chain PREROUTING (policy ACCEPT 177 packets, 93050 bytes)
 pkts bytes target     prot opt in     out     source               destination
  164 13112 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
 7687 4287K MARK       all  --  any    any     anywhere             anywhere            MARK set 0x2
 7687 4287K LOG        all  --  any    any     anywhere             anywhere            LOG level warning prefix `prerouting '

Chain INPUT (policy ACCEPT 184 packets, 91203 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 25 packets, 3100 bytes)
 pkts bytes target     prot opt in     out     source               destination
  304 38367 MARK       all  --  any    any     anywhere             anywhere            MARK set 0x2
  304 38367 LOG        all  --  any    any     anywhere             anywhere            LOG level warning prefix `output '

Chain POSTROUTING (policy ACCEPT 25 packets, 3100 bytes)
 pkts bytes target     prot opt in     out     source               destination

대체 라우팅 테이블을 설정했습니다. ip route show table DSL2나에게주세요

10.77.0.0/16 via 112.112.224.1 dev eth4
112.112.0.0/16 via 112.112.224.1 dev eth4
default via 10.177.55.33 dev eth2

(eth4를 통한 112.112.0.0/16 및 10.77.0.0/16은 LAN이고 eth2를 통한 10.177.55.33은 DSL 라우터 중 하나입니다.)

태그가 2로 설정된 경우 테이블 DSL2를 사용하도록 정책을 추가했습니다 ip rule. 보여주다:

0:      from all lookup local
32764:  from all fwmark 0x2 lookup DSL2
32765:  from all fwmark 0x1 lookup DSL1
32766:  from all lookup main
32767:  from all lookup default

(지금은 DSL1을 무시하십시오. 지금까지는 작동할 것입니다.)

로그에는 태그가 적용되고 있음이 표시됩니다. (줄 끝)

Jun  1 17:05:03 squidXXX kernel: output IN= OUT=eth4 SRC=112.112.xxx.xxx DST=10.77.xxx.xxx LEN=312 TOS=0x08 PREC=0x00 TTL=64 ID=60789 DF PROTO=TCP SPT=22 DPT=49328 WINDOW=543 RES=0x00 ACK PSH URGP=0 MARK=0x2 

그러나 로컬 컴퓨터에서 ping을 보내거나 다른 컴퓨터에서 프록시에 연결하여 외부 주소에 연결하려고 하면 네트워크에 연결할 수 없다는 응답을 받습니다. 참고: 해당 컴퓨터에서 오징어 프록시도 실행 중이며 예상대로 작동합니다. 기본 경로 테이블에 기본 경로로 10.177.55.33을 추가하면 외부 네트워크에 정상적으로 액세스할 수 있습니다.

이제 누군가 동일한 문제가 있다는 것을 읽고 기본 경로를 대상 네트워크 0.0.0.0/1로 교체하여 문제를 해결했습니다. 이는 잘못된 것일 뿐만 아니라(128.0.0.0 이상의 주소는 액세스할 수 없음) 제 경우에도 작동하지 않습니다. 어쨌든, 여기서 얻은 것은 내 라우팅 테이블에 문제가 있을 수 있으므로 기본 라우팅 테이블을 사용하지만 오류가 표시되지 않는다는 것입니다. 아니면 알려진 버그가 있나요?

이 스레드에 따라 예상되는 패킷 라우팅을 추가해 보았지만 ip rule add from all lookup DSL2 prio 1002그렇지 않을 수도 있습니다.

ip rule따라서 태그를 올바르게 읽지 않거나 지정된 테이블을 사용하지 않는 것처럼 보입니다 . 그런데 왜?

관련 정보