LINUX.ORG.RU
решено ФорумAdmin

Завернуть torrent-трафик на другой шлюз

 , ,


0

3

Доброго времени суток. У меня тут возникла такая ситуация: есть маршрутизатор, на маршрутизаторе есть что-то вроде этого:

eth1      Link encap:Ethernet  HWaddr 00:e0:4c:4b:a8:57  
          inet addr:10.2.1.36  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:862010 errors:0 dropped:13 overruns:0 frame:0
          TX packets:1197519 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:361132675 (344.4 MiB)  TX bytes:1214546931 (1.1 GiB)
          Interrupt:23 Base address:0xc000 

tun3      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.0.5  P-t-P:10.10.0.5  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:211762 errors:0 dropped:0 overruns:0 frame:0
          TX packets:263305 errors:0 dropped:314 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:132624488 (126.4 MiB)  TX bytes:179612354 (171.2 MiB)

eth1 живет в серой провайдерской сети, я хожу через него в интернет.
tun3 — интерфейс openvpn (его ip и подсеть, как и провайдерскую, я не выбирал, просто так получилось).

Некоторый трафик я пускаю через vpn, для этого сделана отдельная таблица маршрутизации и несколько правил:

server:~# ip ro sh
10.10.0.0/24 dev tun3  proto kernel  scope link  src 10.10.0.5 
192.168.15.0/24 dev eth3  proto kernel  scope link  src 192.168.15.1 
10.0.0.0/8 dev eth1  proto kernel  scope link  src 10.2.1.36 
default via 10.0.0.2 dev eth1 
server:~# 
server:~# ip ro sh table T1
10.10.0.0/24 dev tun3  scope link  src 10.10.0.5 
default via 10.10.0.1 dev tun3 
server:~# 
server:~# ip ru sh
0:	from all lookup local 
32764:	from all fwmark 0xa lookup T1 
32765:	from 10.10.0.5 lookup T1 
32766:	from all lookup main 
32767:	from all lookup default 

192.168.15.0/24 — внутренняя домашняя сеть. Когда нужно пустить трафик из нее через vpn, я делаю так:

iptables -t mangle -A PREROUTING -s 192.168.15.3 ! -d 192.168.15.0/24 -j MARK --set-mark 10 # маркирую трафик машины, ломящейся в интернет
iptables -t nat -A POSTROUTING -m mark --mark 10 --out-interface tun3 -j SNAT --to-source 10.10.0.5 # делаю маркированным пакетам nat

А еще на маршрутизаторе есть rtorrent, который качает и раздает торренты в режиме 24/7. Запускаю его следующим образом:

su - rtorrent -c "screen -d -m rtorrent"

У меня появилось желание завернуть весь torrent-трафик на tun3. Запускаю shell от имени пользователя rtorrent, делаю «traceroute 8.8.8.8» и вижу, что первый хоп — 10.0.0.2 (шлюз провайдера), пишу в соседнем терминале два правила (owner умеет работать только с OUTPUT/POSTROUTING):

iptables -t mangle -I OUTPUT 1 -m owner --uid-owner rtorrent -j MARK --set-mark 10 
iptables -t mangle -A POSTROUTING -m owner --uid-owner rtorrent -j MARK --set-mark 10
После этого еще раз запускаю traceroute от пользователя rtorrent и вижу, что первый хоп уже 10.10.0.1 (шлюз vpn). Казалось бы, это уже победа, но:
server:~# netstat -anptu | grep rtorrent
tcp        0      0 0.0.0.0:40890           0.0.0.0:*               LISTEN      19328/rtorrent  
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      19328/rtorrent  
tcp        0      1 10.2.1.36:60867         96.24.xxx.xxx:14010      SYN_SENT    19328/rtorrent  
tcp        0  32145 10.2.1.36:50972         49.145.xxx.xxx:49844     ESTABLISHED 19328/rtorrent
tcp        0      1 10.2.1.36:54881         109.182.xxx.xxx:37372    SYN_SENT    19328/rtorrent

Больше никаких идей по определению torrent-трафика в iptables нет. Мне нужна помощь коллективного разума.

Deleted
Ответ на: комментарий от af5

Самое простое решение я как всегда не заметил. Спасибо тебе, добрый человек, все получилось.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.