Как получить доступ к сервису на сервере, который также действует как VPN-шлюз?

855
Aries

В настоящее время я использую VPN-шлюз от Strongswan на CentOS 6.5 VPS.

Сервер CentOS имеет один порт eth.

VPN использует IKEv2, и соединения между клиентами и сервером установлены. Клиентам назначаются виртуальные IP-адреса, взятые из пула 10.0.0.0/24. Клиенты также могут без проблем обращаться друг к другу. Однако я заметил, что сам сервер, который действует как шлюз VPN, не имеет виртуального IP-адреса.

Я использую некоторые службы на VPS-сервере, которые я хотел бы защитить их с помощью VPN-туннеля. Если возможно, я бы не стал выставлять их напрямую в интернет.

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

0
Как выглядит ваш конфиг? В частности, настройки `leftsubnet` на сервере и настройки 'rightsubnet` на клиенте. Если вы используете `0.0.0.0 / 0`, то клиенты могут обращаться к вашему серверу как обычно, потому что весь трафик туннелируется. ecdsa 9 лет назад 0
Спасибо за ваш ответ. Я использую 0.0.0.0/0 для leftsubnet на сервере. И я использую Windows 7 VPN-клиент в режиме IKEv2 для подключения. Я также настроил интернет-запрос от клиентов, который будет перенаправлен на порт eth0 на сервере, чтобы я мог получить доступ к службе прослушивания на порт eth0 сервера в обычном режиме. Чтобы быть более конкретным, я хотел бы добиться того, чтобы некоторые службы работали за брандмауэром, и они прослушивали некоторые порты в локальной сети, скажем, как localhost. И только подключенные пользователи VPN могут получить к ним доступ. Не могли бы вы дать мне предложение для этого? Aries 9 лет назад 0

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

0
ecdsa

If the clients route all the traffic to the server (i.e. with leftsubnet=0.0.0.0/0) you only have to make sure the private services are only accessible via VPN. This is quite simple to achieve with strongSwan. Just accept IKE and IPsec traffic (and possibly SSH and other protocols you want to allow) on the INPUT chain and then set the default policy to DROP:

# allow ESP iptables -A INPUT -p 50 -j ACCEPT # allow IKE iptables -A INPUT -p udp --dport 500 -j ACCEPT # allow NAT-T (IKE and ESP-in-UDP) iptables -A INPUT -p udp --dport 4500 -j ACCEPT # allow SSH and other protocols iptables -A INPUT -p tcp --dport 22 -j ACCEPT ... # drop packets by default iptables -P INPUT DROP 

Then configure leftfirewall=yes and lefthostaccess=yes in ipsec.conf so that strongSwan will automatically insert rules that allow your VPN clients to access the server. These rules use the IPsec policy matching module for iptables/Netfiler (-m policy) so they only apply to traffic coming from established IPsec tunnels.

Спасибо за ваш ответ. Возможно, я не уточнил свой вопрос четко. Это точно такая же настройка iptables, как и у меня. Проблема, с которой я столкнулся, заключалась в том, как виртуальная подсеть для клиентов может безопасно подключаться к службе на сервере, поскольку сам сервер не представлен в этой подсети. Например, я пытаюсь запустить Apache, обращенный к виртуальной подсети. Мне интересно, какой IP-адрес должен прослушивать процесс httpd? Спасибо. Aries 9 лет назад 0
Вам не понадобится специальный IP-адрес для Apache, просто используйте публичный IP-адрес (такой же, как у VPN-сервера) для доступа к нему со стороны клиентов. Поскольку вы блокируете трафик от всех, кроме клиентов VPN, никто другой не может получить доступ к услуге. Конечно, вы можете использовать другой IP-адрес, но поскольку клиенты перенаправляют все на VPN-сервер, на самом деле не имеет значения, какой это IP-адрес. ecdsa 9 лет назад 0