xarek1986
@xarek1986
Инженер

Как дать доступ в интернет из другой подсети?

Салют!
Есть задача: дать доступ к определённым ресурссам через удалённый сервер (что бы на яндекс ходили как обычно, а на гугл через сервер в бельгии), плюс связать удалённый сервер с локальным офисом.
Имеем сервер в датацентре, на котором развёрнуты несколько ВМ. На сервере есть физический интерфейс с выходом в интернет (masquerade) и локальный виртуальный мость virbr1 (172.16.18.1/24) к которому добавлены интерфейсы ВМ (стандартная практика libvirt)
На сервере установлен SoftEther VPN.
В нём создано два хаба (local для подключения из офиса, и vpn для подключения пользователей)
Для хаба local создан tap bridge, добавленный к virbr1. Когда пользователь подключается к этому хабу, ставит себе IP из 172,16,18,0/24, то получает доступ в виртуальную локалку через virbr1, а если прописать
route add -host 213.180.193.3 gw 172.16.18.1 (ip yandex.ru)

то и выход на яндекс через удалённый сервер.
Для соединения двух хабов сосзда виртуальный роутер со следующими параметрами:
>routeriflist router
IP Address |Subnet Mask  |Virtual Hub Name
-----------+-------------+----------------
172.16.18.3|255.255.255.0|local
172.16.20.1|255.255.254.0|vpn

>routertablelist router
Network Address|Subnet Mask  |Gateway Address|Metric
---------------+-------------+---------------+------
0.0.0.0        |0.0.0.0      |172.16.18.1    |    10
172.16.20.0    |255.255.254.0|172.16.20.1    |    10

Так же для хаба vpn был Выключен NAT и включен DHCP (для его активации нужно включить SecureNat, у которого IP 172,16,21,250/23) что бы раздавать пользователям IP и "пушить" роуты (так как нужно роутить только определённые ресурсы)
В итоге получается, что клиент видит виртуальную локальную сеть, из неё видно клиента, но при попытке получить доступ в интернет получаю Destination Port Unreachable
роуты на сервере:
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         x.x.x.x    0.0.0.0         UG    100    0        0 enp1s0f0
y.y.y.y    0.0.0.0         255.255.255.248 U     100    0        0 enp1s0f0
172.16.18.0     0.0.0.0         255.255.255.0   U     0      0        0 virbr1
172.16.20.0     172.16.18.3     255.255.254.0   UG    0      0        0 virbr1

роуты на клиенте:
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.4.1      0.0.0.0         UG    202    0        0 enp2s0
213.180.193.3    172.16.20.1     255.255.255.255 UGH   203    0        0 vpn_vpn0
172.16.4.0      0.0.0.0         255.255.255.0   U     202    0        0 enp2s0
172.16.18.0     172.16.20.1     255.255.255.0   UG    203    0        0 vpn_vpn0
172.16.20.0     0.0.0.0         255.255.254.0   U     203    0        0 vpn_vpn0

172,16,4,0/24 внутренняя локалка

Подскажите, что я мог упустить, почему, нет доступа к внешнему интерфейсу сервера?
  • Вопрос задан
  • 1406 просмотров
Решения вопроса 1
xarek1986
@xarek1986 Автор вопроса
Инженер
Проблема оказалась в FirewallD. В виду специфики его работы (или моей криворукости) доступ к внешнему интерфейсу был разрешён только из сети 172.16.18.0/24 о чём свидетействовало правило
-A FORWARD -d 172.16.18.0/24 -i eth0 -o eth1 -j ACCEPT
-A FORWARD -s 172.16.18.0/24 -i eth1 -o eth0 -j ACCEPT


При этом, если попробовать добавить direct-rule
ipv4 filter FORWARD 0 -i eth0 -o eth1 -d 172.16.4.0/24 -j ACCEPT
ipv4 filter FORWARD 0 -i eth1 -o eth0 -s 172.16.4.0/24 -j ACCEPT

то они не отрабатывали (почему-то).
Заработало только после ручного вмешательства, что не очень хорошо, хотя и пока не критично
iptables -I FORWARD 1 -d 172.16.4.0/24 -i eth0 -o eth1 -j ACCEPT
iptables -I FORWARD 1 -s 172.16.4.0/24 -o eth0 -i eth1 -j ACCEPT

В общем, благодаря неоценимому вкладу Александр Карабанов нам удалось понять в чём проблемма.
для себя я написал скрипт, где прописываются нужные роуты и добавляются вышеописаные правила
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vvs-ts9
я не очень понимаю картину, потому вопрос: где тут роуты подсети "наружу" ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы