Iptable은 특정 TCP/UDP 포트를 VPN(tun1)으로 리디렉션합니다.

Iptable은 특정 TCP/UDP 포트를 VPN(tun1)으로 리디렉션합니다.

Linux 기반 라우터가 있고 iptables 명령을 기반으로 VPN 및 isp를 통해 트래픽을 라우팅하도록 VPN 클라이언트를 설정했습니다. VPN을 통해 특정 tcp 및 모든 udp 포트만 라우팅하려고 시도하고 tcpdump를 사용하여 확인했지만 얻을 수 없는 것 같습니다. 여기서 작동하는 것은 내가 사용한 코드입니다

iptables -t mangle -A PREROUTING -i br0 -p tcp -m multiport --dport ! 20,21,22,80,81,443,8080 -j MARK --set-mark 2

iptables -t mangle -A PREROUTING -i br0 -p udp -j MARK --set-mark 2

여기서 "2"는 VPN 테이블(제 경우에는 테이블 10)이고 "1"은 ISP 테이블(테이블 100)입니다.

스크립트에는 다른 라우팅 관련 기능이 있으며 특정 IP를 VPN 및 킬 스위치로 이동하는 데 잘 작동합니다.

개념은 라우터 자체(내부 "lan" 192.168.1.1)에서 토렌트 클라이언트를 실행하려고 하며 위에 나열되지 않은 모든 udp와 모든 tcp 포트가 VPN을 사용하고 나머지는 VPN을 사용하기를 원한다는 것입니다. isp

"입력 출력" 및 "전달" 옵션도 사용해야 할 수도 있다는 말을 들었습니다. 그러나 읽은 내용에도 불구하고 포트를 올바르게 라우팅할 수 없는 것 같고 스크립트가 중단되고 종료됩니다. 라우터가 충돌하거나 인터넷에 연결하기 위해 VPN이나 ​​ISP를 통과하는 트래픽이 전혀 발생하지 않습니다.

좌절감 때문에 포트 부분을 제거했기 때문에 포트 부분이 없는 스크립트는 다음과 같습니다.

#!/bin/sh

main() {

for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 0 > $i
done

ip route flush table 100

ip rule del fwmark 1 table 100

ip route del default table 100

ip rule del fwmark 2 table 10

ip route flush cache

iptables -t mangle -F INPUT

iptables -t mangle -F OUTPUT

iptables -t mangle -F FORWARD

iptables -t mangle -F PREROUTING

iptables -t mangle -F POSTROUTING

iptables -t mangle -F

ip route show table main | grep ^default | grep -Ev tun1 \
  | while read ROUTE ; do
      ip route add table 100 $ROUTE
done

ip route add default table 100 via 
$(nvram get wan_gateway)

ip rule add fwmark 1 table 100

ip rule add fwmark 2 table 10

ip route flush cache
}

int() {
iptables -t mangle -A PREROUTING -i "$1" -j MARK --set-mark 1
}

adr() {
iptables -t mangle -A PREROUTING -i br0 -s "$1" -j MARK --set-mark 2
}

kills() {
iptables -I FORWARD -s "$1" -o eth0 -j DROP
}

main

int br0

adr 192.168.1.115/32

adr 192.168.1.119/32

adr 192.168.1.147/32

kills 192.168.1.115/32

kills 192.168.1.119/32

kills 192.168.1.147/32

exit 0

내 라우터는 기본적으로 VPN 대신 ISP를 통해 트래픽을 라우팅하도록 설정되어 있습니다.

답변1

이를 이해하는 한 가지 핵심은 라우터 호스트로 들어오고 나가는 패킷이 iptables라우터를 통과하는 패킷과 다른 경로를 취한다는 것입니다. 예를 들어 Google iptables-chains.png에서 일부 이미지를 검색하여 후속 조치를 취할 수 있습니다.http://jensd.be/wp-content/uploads/iptables_chains.png.

개요 이미지 위치:http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/10822f1.png규칙을 설정하는데도 도움이 됩니다 iptables.

특히 PREROUTING이 테이블의 연결리스트 mangle는 다음에만 적용됩니다.들어오는패킷을 전달하는 경우(원격에서 원격으로) 패킷이 전달되는 로컬에서 원격으로의 트래픽에 적합하고 나가는 패킷을 라우터로 보내려는 경우에 적합합니다. 따라서 위의 초기 규칙 설정은 로컬 트래픽을 원격 트래픽으로 전달하기 위해 OUTPUT테이블 ​​체인을 대상으로 해야 합니다.mangle

관련 정보