Услуги хостинга при подключении к OpenVPN

198
Krzaku

Иногда я размещаю различные сервисы (веб-серверы, игровые серверы и т. Д.), К которым я хотел бы получить доступ через свой реальный IP-адрес, даже если я подключен к серверу OpenVPN. В Windows мне не нужно было ничего менять, это просто работало с настройками по умолчанию, как я могу настроить это так же, как в Linux?

0
Вы уверены, что у вас все еще есть выделенный IP-адрес, доступный извне? Сегодня большинство интернет-провайдеров используют NAT, поэтому, независимо от того, что вы делаете на своей локальной машине, вы не будете доступны. Тем не менее, один из способов использования разных IP-соединений - это использование разных пространств сетевых имен для тех приложений, которые подключаются через VPN, и тех, которые подключаются напрямую. dirkt 7 лет назад 0
@dirkt Да, я уверен, что когда я отключаюсь от OpenVPN, серверы, которые я размещаю, становятся доступными через этот IP. Я думал, что разные пространства имен позволяют использовать реальный IP для одних исходящих соединений и OpenVPN для других? Не входящие соединения? Krzaku 7 лет назад 0
Ах, размещенные серверы. Пока вы находитесь в другом сетевом пространстве имен, все соединения, независимо от того, являются они входящими или исходящими, будут обрабатываться в соответствии с настройкой в ​​пространстве имен. Так почему вы думаете, что входящие соединения отличаются? Одно пространство имен с конечной точкой `tun0` VPN внутри него для VPN-соединений, одно глобальное пространство имен для прямых соединений. dirkt 7 лет назад 0

1 ответ на вопрос

0
Krzaku

Это заняло у меня некоторое время, но я понял это. Не так просто, как я надеялся, но это работает. Спасибо @dirkt за указание в правильном направлении.

Сначала создайте следующие скрипты в каталоге / usr / local / bin:

nsstart:

#!/bin/sh  # Enable eno1 interface # eno1 is the name of the interface I get my connection from, change it so it fits your system ip link set eno1 up  # Add 'internet' namespace ip netns add internet  # Create veth pair and add veth1 to 'internet' namespace ip link add type veth ip link set veth1 netns internet ip link set veth0 up  # Create bridge interface and add eno1 and veth0 to it ip link add type bridge ip link set bridge0 up ip link set eno1 master bridge0 ip link set veth0 master bridge0  # Enable namespace interfaces, add IP and route ip netns exec internet ip link set lo up ip netns exec internet ip link set veth1 up  # Set a free IP from your routers IP range here # You can also use a DHCP client if you have one, mine didn't work with namespaces ip netns exec internet ip addr add 192.168.1.99/24 dev veth1  # Set IP of the router here ip netns exec internet ip route add default via 192.168.1.1 metric 10 

nsinternet:

#!/bin/sh  # Execute the command in internet namespace as user who called sudo ip netns exec internet sudo -u "#$SUDO_UID" -g "#$SUDO_GID" -- "$@" 

Затем добавьте и включите службу systemd в файл /etc/systemd/system/internet-namespace.service(я использую systemd-networkdдля получения своего IP-адреса от моего маршрутизатора, если вы используете что-то другое, измените его ниже, чтобы мост был настроен до того, как клиент DHCP попытается получить для него адрес):

[Unit] Description=Sets up a namespace that uses real internet connection instead of OpenVPN After=systemd-udevd.service Before=systemd-networkd.service network.target Wants=network.target  [Service] Type=oneshot RemainAfterExit=1 ExecStart=/usr/local/bin/nsstart  [Install] WantedBy=multi-user.target 

Затем добавьте эту строку в sudoersфайл (это необязательно, это сделает так, чтобы вам не приходилось вводить пароль при попытке использовать пространство имен, которое мы создали):

%wheel ALL=NOPASSWD: /usr/local/bin/nsinternet 

Не забудьте добавить bridge0к вашему DHCP-клиенту.

Вот и все. Включите службу openvpn-client, и все готово. Теперь по умолчанию используется пространство имен, использующее VPN-соединение, и если вы хотите использовать ваше настоящее интернет-соединение, просто запустите sudo nsinternet YOUR_COMMAND.

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