LINUX.ORG.RU
ФорумAdmin

Подключение клиента должно использовать соединение только для подсети внутри VPN

 , ,


0

2

Помогите, пожалуйста, правильно настроить VPN маршрутизацию. Задачу, можно описать так: есть несколько клиентов, каждый из которых подключается к VPN серверу. На этих клиентах работают «блондинки», они ничего настроить в своих маршрутах не смогут. Нужно сделать так, что бы в рамках VPN сети, эти клиенты могли «видеть» друг друга, а весь остальной трафик (не относящийся к подсети VPN) продолжал ходить без изменений.

VPN сервер настроил на StrongSWAN. Его внешний ip адрес *.*.*.ip

Настройки ipsec VPN сервера nano /etc/ipsec.conf

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    ike=aes256-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha1,3des-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=*.*.*.ip
    leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=10.10.10.0/24
    rightsendcert=never
    eap_identity=%identity

Настроил пароли nano /etc/ipsec.secrets

*.*.*.ip : RSA "/etc/ipsec.d/private/vpn-server-key.pem"
your_username1 %any% : EAP "your_password1"
your_username2 %any% : EAP "your_password2"

Выдал (спасибо гуглу) такую команду:

iptables -A INPUT -p udp --dport 500 --j ACCEPT
iptables -A INPUT -p udp --dport 4500 --j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -t nat -A POSTROUTING -j SNAT --to-source *.*.*.ip -o eth+
echo "net.ipv4.ip_forward = 1" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" |  tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" |  tee -a /etc/sysctl.conf
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
sysctl -p

Установил на тестовых клиентах CA сертификаты и подключился по логину и паролю. Клиенты получили ip адреса в подсети 10.10.10.0. Между ними проходит пинг, но и весь трафик пошел через VPN. Я понимаю, что POSTROUTING отправил весь трафик на интерфейс где задан внешний ip адрес vpn сервера. Но, что я должен сделать, что бы интернет клиентов оставался на своем месте, я не понимаю.

iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  anywhere             anywhere             to:*.*.*.ip

Весь трафик клиентов мог пойти через сервер только в том случае, если маршрутом по умолчанию с более низкой метрикой прописан адрес vpn сервера.

Посмотри таблицу маршрутизации на коиентах.

Ну и leftsubnet 0.0.0.0/0 точно не так должно быть.

Удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Тогда как должно быть

Посмотри таблицу маршрутизации на коиентах.
Ну и leftsubnet 0.0.0.0/0 точно не так должно быть.

Подскажите, что не так в настройке ipsec.conf?

bwwebm
() автор топика
Ответ на: комментарий от kostik87

Таблица маршрутов на клиенте

Перед подключением route print

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2     35
      192.168.1.0    255.255.255.0         On-link       192.168.1.2    291
      192.168.1.2  255.255.255.255         On-link       192.168.1.2    291
    192.168.1.255  255.255.255.255         On-link       192.168.1.2    291
        224.0.0.0        240.0.0.0         On-link       192.168.1.2    291
  255.255.255.255  255.255.255.255         On-link       192.168.1.2    291
===========================================================================
Постоянные маршруты:
  Отсутствует

После подключения route print

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2   4260
          0.0.0.0          0.0.0.0         On-link        10.10.10.3     36
       10.10.10.3  255.255.255.255         On-link        10.10.10.3    291
   *.*.*.ip  255.255.255.255      192.168.1.1      192.168.1.2   4261
      192.168.1.0    255.255.255.0         On-link       192.168.1.2   4516
      192.168.1.2  255.255.255.255         On-link       192.168.1.2   4516
    192.168.1.255  255.255.255.255         On-link       192.168.1.2   4516
        224.0.0.0        240.0.0.0         On-link       192.168.1.2   4516
        224.0.0.0        240.0.0.0         On-link        10.10.10.3     36
  255.255.255.255  255.255.255.255         On-link       192.168.1.2   4516
  255.255.255.255  255.255.255.255         On-link        10.10.10.3    291
===========================================================================
Постоянные маршруты:
  Отсутствует

bwwebm
() автор топика
Ответ на: Таблица маршрутов на клиенте от bwwebm
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2   4260
          0.0.0.0          0.0.0.0         On-link        10.10.10.3     36

Маршрут 0.0.0.0 - это маршрут по умолчанию, т.е. в нём указывается шлюз.

После подключения к VPN сети в таблице маршрутизации появляется второй маршрут 0.0.0.0 с указанием VPN сервера как шлюза, при чём у этого маршрута более низкая метрика (36 против 4260), т.е. пакеты при выборе из двух маршрутов 0.0.0.0 пойдут через VPN сервер.

Читай что такое leftsubnet и rightsubnet и думай что там нужно указывать. Но точно не 0.0.0.0.

Удачи.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.