Настройка VPN Client-Server, NAT в Sabayon Linux (Gentoo)

В описываемой конфигурации приводятся:
название соединения - vpn  
пользователь test
пароль 12345

1. VPN

Ядро должно быть собрано с поддержкой протокола шифрования MPPE

  Cryptographic options --->
  [*] Cryptographic API
  [*] HMAC support
  [M] MD5 digest algorithm
  --- SHA1 digest algorithm
  [M] SHA256 digest algorithm
  [M] SHA384 and SHA512 digest algorithms
  [M] DES and Triple DES EDE cipher algorithms
  [M] ARC4 cipher algorithm
  [M] Deflate compression algorithm
  Device Drivers --->
  Networking support --->
  [*] PPP (point-to-point protocol) support
  [*] PPP filtering
  [M] PPP support for async serial ports
  [M] PPP support for sync tty ports
  [M] PPP Deflate compression
  [M] PPP BSD-Compress compression
  [M] PPP MPPE compression (encryption) (NEW)

1.1 Client

Должны быть установлены net-dialup/ppp и net-dialup/pptpclient

Файл с настройками vpn соединения: /etc/ppp/peers/vpn

  pty "/usr/sbin/pptp адрес_vpn_сервера --nolaunchpppd"
  lock
  noauth
  nobsdcomp
  nodetach
  nodeflate
  user test                        # использовать для аутентификации аккаунт test
  require-mppe-128        # использовать 128-битное шифрование MPPE
  defaultroute                 # использовать шлюз VPN как шлюз по умолчанию
  persist                          # возобновлять соединение при обрыве
  maxfail 10                   # прекратить возобновление соединения после 10 неудачных попыток (0 - возобновлять бесконечно, не рекомендуется)
  debug                           # выводить отладочную информацию

Файл, в котором хранятся логин и пароль пользователя: /etc/ppp/chap-secrets

  test * 12345 *

Соединение устанавливается вызовом

  # pppd call vpn

1.2 Server

Должны быть установлены net-dialup/ppp и net-dialup/pptpd

Файл в котором хранятся логин и пароль пользователей: /etc/ppp/chap-secrets

  test pptpd 12345 *

(если необходимо привязать определённый IP к логину, вместо * следует указать соответствующий IP)

Файл с настройками vpn соединения: /etc/ppp/options.pptpd

  lock
  auth                                                                  # требовать аутентификацию у клиентов
  nobsdcomp
  novj
  novjccomp
  nologfd
  name pptpd                                                      # название сервера (должно совпадать с названием в файле /etc/ppp/chap-secrets)
  refuse-pap                                                        # не использовать протокол аутентификации PAP
  refuse-chap                                                      # не использовать протокол аутентификации CHAP
  refuse-mschap                                                 # не использовать протокол аутентификации MS-CHAP версии 1
  require-mschap-v2                                          # использовать протокол аутентификации MS-CHAP версии 2
  require-mppe-128                                           # использовать 128-битное шифрование MPPE
  ms-dns адрес_основного_днс_сервера
  ms-dns адрес_резервного_днс_сервера
  proxyarp
  lcp-echo-failure 3                                     # если n LCP echo-requests отправлены без приема правильных LCP echo-reply - pppd завершит связь.
  lcp-echo-interval 30                                # отправлять кадр LCP echo-request удаленной стороне каждые n секунд для определения что удаленная сторона больше не соединена.
  debug                                                               # выводить отладочную информацию

Файл c настройками pptpd: /etc/pptpd.conf

  ppp /usr/sbin/pppd
  option /etc/ppp/options.pptpd
  connections 10                                                # количество одновременных соединений, поддерживаемых сервером
  localip 192.168.192.1                                     # адрес vpn сервера (для vpn соединений с клиентами)
  remoteip 192.168.192.2-11                            # диапазон адресов, назначаемых клиентам
  debug                                                              # выводить отладочную информацию


(в конце файла необходимо оставить пустую строку, иначе работать не будет)

и прописать pptpd в автозагрузку

  # rc-update add pptpd default

2. NAT

Ядро должно быть собрано с опцией CONFIG_IP_NF_TARGET_MASQUERADE=y

-> Networking support (NET [=y])
  -> Networking options
    -> Network packet filtering framework (Netfilter) (NETFILTER [=y])
      -> IP: Netfilter Configuration
        -> IP tables support (required for filtering/masq/NAT) (IP_NF_IPTABLES [=y])
          -> Full NAT (NF_NAT [=y])
            <*>     MASQUERADE target support

и установлен net-firewall/iptables, после чего нужно добавить правило

  # iptables -t nat -A POSTROUTING -s адрес_внутренней_сети -o внешний_интерфейс -j MASQUERADE

где адрес_внутренней_сети - это адрес сети и маска, например 192.168.192.0/24, а внешний_интерфейс - название сетевого интерфейса, подключенного к Интернету, например ppp0 или eth1

затем надо сохранить изменения

  # /etc/init.d/iptables save

прописать iptables в автозагрузку

  # rc-update add iptables default

включить маршрутизацию

  # sysctl -w net.ipv4.ip_forward=1

и сохранить изменения

Файл: /etc/sysctl.conf

  net.ipv4.ip_forward = 1

©mohado
Используются технологии uCoz