Я пытаюсь маршрутизировать часть трафика по ip из моей локальной сети через экземпляр Ubuntu Server, на котором запущен openconnect, на удаленный сервер.

     Client             Router      Ubuntu Server (ens160)  tun0   remote resource
| 192.168.1.x | -> | 192.168.1.1 | -> | 192.168.1.38 | -> | VPN | -> | 1.1.1.1 |

Мои маршруты выглядят так:

Destination    Gateway     Genmask         Flags Metric Ref    Use  Iface
0.0.0.0        0.0.0.0     0.0.0.0         U     0      0      0    tun0
1.3.4.0        0.0.0.0     255.255.255.0   U     0      0      0    tun0   (vpn dhcp range)
1.4.5.6        192.168.1.1 255.255.255.255 UGH   0      0      0    ens160 (ip from remote)
192.168.1.0    0.0.0.0     255.255.255.0   U     0      0      0    ens160
192.168.122.0  0.0.0.0     255.255.255.0   U     0      0      0    virbr0

Мне удалось направить трафик на 1.1.1.1 на мой сервер Ubuntu по адресу 192.168.1.38 . Трассировка маршрута от клиента подтверждает это.

Tracing route to [1.1.1.1] over a maximum of 30 hops:
  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2    <1 ms    <1 ms    <1 ms  192.168.1.38
  3     *        *        *     Request timed out.

Таким образом, трафик останавливается на сервере Ubuntu на интерфейсе ens160 (я полагаю). Это где я потерян. Я искал решения, но меня немного смущает множество вариантов, которые у меня есть. Первоначально я просто хотел добавить статический маршрут, говорящий src lan through tun0 , но шлюз 0.0.0.0? Затем я вижу, что третий маршрут - это ip, принадлежащий удаленному vpn-местоположению. Поэтому я предполагаю, что это маршрут через мою глобальную сеть для VPN.

Я включил IP-пересылку. И попробовал добавить маскарад и правило nat с iptables. Но я уверен, что как-то все испортил.

iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE  
iptables -A FORWARD --in-interface ens160 -j ACCEPT

Я ценю любую помощь.

1 ответ1

1

Похоже, вам нужно включить пересылку в ядре. Бежать:

# sysctl -w net.ipv4.ip_forward=1
or
# echo 1 > /proc/sys/net/ipv4/ip_forward

посмотрим, работает ли это.

Добавьте net.ipv4.ip_forward=1 в /etc/sysctl.d/80-forward.conf (или что-то подобное), чтобы выжить после перезагрузки.

редактировать

Возможно, вы забыли разрешить трафику вернуться в цепочку FORWARD. Попробуй это:

# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Таким образом, движение может вернуться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .