Направить трафик на какой-либо хост в Интернете через VPN-сервер

Направить трафик на какой-либо хост в Интернете через VPN-сервер

Мне нужно направить трафик на какой-то хост в Интернете через VPN-сервер.

Конфигурация:

Компьютер: ubuntu-12.04

eth0 - хххх/24

tun0 - inet addr:10.8.0.6 PtP:10.8.0.5 Маска:255.255.255.255

Есть сервер OpenVPN (Amazon):

убунту-12.04

eth0 - гггг/24

tun0 - inet addr:10.8.0.1 PtP:10.8.0.2 Маска:255.255.255.255

В Интернете есть хост IP: qqqq

Я хочу, чтобы трафик на qqqq шел через OpenVPN сервер. Для этого я делаю:

iptables:

Я отмечаю пакеты в таблице mangle:

sudo iptables -t mangle -A OUTPUT -d q.q.q.q -j MARK --set-mark 2

Я отправляю трафик на qqqq throw tun0:

sudo iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source 10.8.0.6

iproute2:

Я создаю таблицу "100" в /etc/iproute2/rt_tables

sudo ip rule add fwmark 2 table 100
sudo ip route add default via 10.8.0.5 table 100

tcpdump на 1-м компьютере:

14:22:04.554399 IP 10.8.0.6 > qqqq.clodo.ru : ICMP-эхо-запрос, идентификатор 11717, последовательность 1, длина 64

14:22:04.681918 IP qqqq.clodo.ru > 10.8.0.6 : ICMP эхо-ответ, идентификатор 11717, последовательность 1, длина 64

14:22:05.562577 IP 10.8.0.6 > qqqq.clodo.ru : ICMP-эхо-запрос, идентификатор 11717, последовательность 2, длина 64

14:22:05.690240 IP qqqq.clodo.ru > 10.8.0.6 : ICMP эхо-ответ, идентификатор 11717, последовательность 2, длина 64

Но пинга нет. Отправлено 2 пакета, получено 0, потеря пакетов 100%.

решение1

Вам не нужно маркировать пакеты. Для того, чтобы сделать то, что вы планируете, вам понадобится следующее:

в файл конфигурации сервера добавьте следующее:

"push route q.q.q.q 255.255.255.255"

Вышеуказанное действие передаст маршрут на сторону клиента, поэтому весь трафик, отправляемый от клиента на этот IP-адрес, будет отправляться через туннель OpenVPN.

Также на стороне сервера вам необходимо принять входящий трафик от клиента, вы можете принять весь трафик, поступающий из клиентской подсети, следующим образом:

iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT

вам также может понадобиться это не уверен:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

Вам необходимо преобразовать входящий трафик со стороны клиента на сторону сервера [сделать это на стороне сервера]

iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER

И вам не нужны iproute2 или таблица mangle.

Порядок правил имеет значение, поэтому порадуйте их, прежде чем применять соответствующее правило сброса.

Связанный контент