Коротко: Интересно, можно ли маршрутизировать (с помощью iptables), чтобы все сообщения, направленные на / из порта 192.168.1.10 (eth0) 40000, отправлялись на tun0? (VPN)
Дольше: Когда я подключаюсь к своему VPN-серверу, все данные маршрутизируются через сеть tun0, за исключением этого приложения (которое никуда не денется), которое полностью отказывается понимать (плохое программирование). Это приводит к тому, что приложение бьется головой о систему, не выходя из нее ..
Можно ли принудительно направить все данные, которые идут на 192.168.1.10:40000, на tun0 (сетевой интерфейс VPN) и маршрутизировать все входящие данные из tun0: 40000 будут перенаправлены обратно на 192.168.1.10
Обновление: Это результат маршрута IP -4:
*0.0.0.0/1 via 10.128.0.1 dev tun0
default via 192.168.1.1 dev enp0s3 proto dhcp metric 20100
10.128.0.0/22 dev tun0 proto kernel scope link src 10.128.2.129
128.0.0.0/1 via 10.128.0.1 dev tun0
169.254.0.0/16 dev tun0 scope link metric 1000
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.173 metric 100
217.64.xxx.xx via 192.168.1.1 dev enp0s3*
, Когда я соединяюсь со своим сервером VPN, все данные направляются через tun0 сеть, кроме этого приложения, которое полностью отказывается понимать (плохо программирующий).
Сетевое программирование имеет разделенная на уровни модель , это означает, что автор приложения просто говорит системе соединяться с определенным IP-адресом на определенном порте, он не должен беспокоиться об остальных, с тех пор как достигнуть, тот сокет TCP/IP до операционной системы.
Вы проблема вызывается плохой настройкой маршрутизации. Давайте проводить несколько строк как это:
1.2.3.0/29 dev tun0
1.2.0.0/22 dev tun0 via 1.2.3.4
первые средства: если крайние левые 29 битов адреса назначения идентичны тем 1.2.3.0
(т.е. от 1.2.3.0
до 1.2.3.7
) отправляют пакет непосредственно на tun0
. Вторая строка означает, что адреса от 1.2.0.0
до 1.2.3.255
, которые не находятся в /29
строка, должны быть отправлены в [1 111]. Ядро знает, как найти 1.2.3.4
от первой строки.
таблицы маршрутизации Windows почти идентичны (они первоначально взяли стек TCP/IP от BSD).
Теперь к Вашей ситуации. У Вас есть две записи маршрутизации:
0.0.0.0/1 via 10.128.0.1 dev tun0
default via 192.168.1.1 dev enp0s3
, где default
ярлык для [1 114] (все адреса). Так: если адрес назначения запускается с [1 115] [до 1 116], он отправляется до [1 117], иначе он отправляется до [1 118].
, Если Вы хотите направить почти весь трафик до [1 119], сначала найдите адрес другой конечной точки туннеля VPN (вероятно ip link
, может помочь, но Вы не сказали, что является Вами использующий для Вашего туннеля). Скажем, это 5.5.5.5
. tun0
виртуальный интерфейс, который шифрует пакеты, отправленные через него, и отправляет их в другую конечную точку через физический интерфейс. Таким образом, мы должны добавить маршрут, таким образом, пакеты к [1 123] отправляются до [1 124]:
ip route add 5.5.5.5 via 192.168.1.1 dev enp0s3
(Редактирование: после чтения снова Вашей таблицы маршрутизации, это на самом деле уже там в последней строке)
Затем, можно направить оставшийся трафик до [1 125]:
ip route del default
ip route add default via 10.128.0.1 dev tun0
В зависимости от пути Вы устанавливаете свои интерфейсы (и туннель), можно сделать те вещи автоматически, когда интерфейсы повышаются.
TL; DR Просто заменяет 0.0.0.0/1
[1 127], везде, куда Вы помещаете его.