Перенаправление портов через 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 не поступает никаких пакетов.
У тебя есть идея?
Заранее спасибо.
2 ответа
Если ваш трафик 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-адрес удаленного шлюза), а не через локальный интерфейс. Хотя он должен работать в любом случае, так как это PtP-интерфейс, он не чувствует себя хорошо. При добавлении маршрута через скрипт вы можете просто пропустить параметр "via" и просто использовать dev tun0
, Это работает с интерфейсами PtP, поскольку нет никакой двусмысленности относительно того, с каким хостом связаться на другой стороне ссылки.
Используйте опцию OpenVPN redirect-gateway, чтобы автоматически перенаправлять шлюз по умолчанию в VPN, не играя вручную с маршрутом и iptables.