Назад | Перейти на главную страницу

перенаправление порта через VPN

Я хочу перенаправить свой TCP-трафик в IRC через VPN.

Я помечаю пакеты с помощью iptables и создаю новый маршрут для этих пакетов:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/tun0/rp_filter

iptables -t mangle -A OUTPUT ! -d 192.168.0.0/16 -p tcp --dport 6667 -j MARK --set-mark 0x42

ip route add default dev tun0 src 10.5.82.5 table VPN
ip rule add fwmark 0x42 table VPN

VPN-соединение:

# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet adr:10.5.82.5  P-t-P:10.5.82.6  Masque:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2898 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3163 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100 
          RX bytes:159644 (155.9 KiB)  TX bytes:257601 (251.5 KiB)

Пакеты перенаправляются на tun0 на локальном компьютере (теги iptables и правило ip в порядке), но на интерфейс tun0 VPN пакет не поступает.

Есть идея?

Заранее спасибо.

Если ваш IRC-трафик исходит от того же хоста, на котором вы создали правила, вы можете столкнуться с проблемой «неправильного» исходного IP-адреса в исходящих пакетах - проверьте, является ли исходный адрес 10.5.82.5, используя tcpdump -i tun0 -v -n. Если это не так, просто добавьте src 10.5.82.5 на ваш ip route add команда.

Если трафик исходит из другого места, рассмотрите правило NAT: iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Также ваш маршрут должен идти через 10.5.82.6 (IP-адрес удаленного шлюза), а не ваш локальный интерфейс. Хотя он должен работать в любом случае, поскольку это интерфейс P-t-P, он кажется неправильным. При добавлении маршрута через скрипт вы можете просто опустить параметр «via» и просто использовать dev tun0. Это работает с интерфейсами P-t-P, поскольку нет никакой двусмысленности в отношении того, с каким хостом связаться на другой стороне канала.

Используйте OpenVPN редирект-шлюз возможность автоматического перенаправления шлюза по умолчанию в VPN, без ручной игры с маршрутом и iptables.