iptables를 통한 라우팅

iptables를 통한 라우팅

라우팅 테이블에 접촉한 다음 접촉되면 종료되도록 계속 감시하는 VPN 클라이언트가 있습니다. 이는 노트북과 같은 엔드포인트에 필요한 일종의 설정입니다.

소형 PC를 VPN 엔드포인트로 사용하고 이를 통해 LAN(192.168.0.0/24)의 다른 시스템으로 라우팅하고 싶습니다.

라우팅 테이블을 건드릴 수 없고 모든 패킷이 VPN 장치를 통해 강제로 전송되므로 패킷을 192.168.0.0 네트워크로 다시 장치로 POSTROUTE하는 데 도움이 될 수 있다고 tun0생각했습니다 .iptableseth1

하지만 이것이 어떻게 작동할지 잘 모르겠습니다. 일단 종료되면 eth1IPtoMAC이 이미 대상 네트워크에 있기 때문에 해결해야 하고, 패킷이 이미 해결되었는지 아니면 도달할 때까지 발생하지 않을지 모르기 때문입니다. 아이페이스.

힌트가 있나요?

답변1

더 많은 정보를 제공하지 않으셨기 때문에 최선의 답변이 무엇인지 잘 모르겠습니다.

따라서 라우팅 테이블을 수정할 수 없다는 점을 의도적으로 무시하면서 몇 가지 지침을 제공하려는 시도는 다음과 같습니다(내 제안을 읽는 이유를 이해하게 될 것입니다).

VPN 클라이언트 및어디local커널의 FIB(forward information base)에 연결되므로 VPN에 의한 FIB 모니터링 또는 표현식 라우팅 테이블을 사용하는 작업이 및 main규칙 테이블 에 대해서만 발생한다는 점에서 운이 좋을 수도 있습니다 . 다음을 사용하여 라우팅 규칙을 확인할 수 있습니다.

ip rule show

규칙 테이블 항목인 "lookup" 태그 뒤의 각 문자열에 대해 다음을 사용하여 FIB에서 해당 라우팅 정보를 쿼리할 수 있습니다.

ip route show table <name>

운이 좋다면 요구 사항에 맞는 규칙을 구성하고 규칙 조회 테이블에서 해당 규칙에 우선권을 부여할 수 있습니다. 예를 들어 (당신이 먼저 시작할 수 있도록 뭔가를 만들었습니다) main특정 흐름보다 선호도가 높은 새 규칙을 추가해 보겠습니다.

ip rule add from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 pref 12000
ip rule show
   0:   from all lookup local 
   12000:   from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 
   32766:   from all lookup main 
   32767:   from all lookup default 

표준 Linux(이 게시물의 경우 Ubuntu) 시스템에서는 세 개의 기본 규칙 테이블 및 가 표시되며 , local일반적 으로 예를 들어 호출할 때만 테이블이 표시됩니다 .maindefaultmainnetstat -rn

이제 조회 테이블 888의 FIB 항목을 새로운 라우팅 항목으로 채우려고 합니다.

ip route add default via 10.37.129.4 dev eth2 table 888

표 888의 라우팅 항목이 어떻게 보이는지 살펴보겠습니다.

ip route show table 888
  default via 10.37.129.4 dev eth2

나는 당신이 아이디어를 얻을 것 같아요. 이제 특정 라우팅 요구 사항과 관련하여 정확히 무엇을 달성하려는지 불분명합니다. 규칙 테이블을 다룰 때는 라우팅 캐시를 플러시해야 합니다.

ip route flush cache

iproute2 아키텍처를 사용하면 기본적으로 거의 모든 FIB 항목을 필터링하고 수정할 수 있습니다. 규칙 항목은 다음과 같이 fwmarks 및/또는 u32 분류자를 기반으로 만들 수도 있습니다(예는정책 라우팅 북):

tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 \
    match ip src 10.1.1.0/24 classid :1
ip rule add fwmark 1 table 1 prio 15000 realms 3/4
ip route add default via 192.168.1.1 table 1 src 192.168.1.254
ip route flush cache

규칙 테이블 항목이 제대로 작동하지 않는 경우 수년 전에 시스템을 원래 라우팅 규칙 상태로 되돌리기 위해 작은 bash 조각을 준비했습니다.

: ${KEEP:="local main default"}
while read prio rule; do
     continue=0
     for keep in ${KEEP}; do
         if [ "${rule//lookup ${keep}/}" != "${rule}" ]; then
             continue=1
         fi
     done
     if [ ${continue} -eq 0 ]; then
         ip rule del prio ${prio%%:*} ${rule//all/0/0}
     fi
done < <(ip rule show)

놀랍게도 의 존재가 10년이 넘은 후에도 iproute2여전히 고전 너머의 우주가 있다는 것을 아는 사람은 거의 없는 것 같습니다."고장난"ifconfig또는 같은 도구 netstat.

관련 정보