Corbina VPN поднятие интернета под Gentoo: различия между версиями

Материал из AlexNook
Перейти к навигацииПерейти к поиску
 
(не показано 8 промежуточных версий этого же участника)
Строка 41: Строка 41:


=== Самое интересное - основные сетевые настройки - NET===
=== Самое интересное - основные сетевые настройки - NET===
[[Corbina_VPN_поднятие_интернета_под_Gentoo/old_net_config|Старая версия]] конфигурационных файлов до перехода на OpenRC.
{{root|nano /etc/conf.d/net}}
{{root|nano /etc/conf.d/net}}
{{File|/etc/conf.d/net|
{{File|/etc/conf.d/net|
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div">
config_eth1=("192.168.0.1 netmask 255.255.255.0")
dns_domain_lo="homenetwork"
config_eth1="192.168.0.1 netmask 255.255.255.0"
#mtu_eth1=1500
#mtu_eth1=1500


GATEWAY="10.134.40.1"
GATEWAY="10.134.40.1"
config_eth0=( "dhcp" )
modules="dhclient"
modules=( "dhclient" )
config_eth0="dhcp"
dhcp_eth0="nontp"
#avtoperehod v demona
#avtoperehod v demona
#dhclient_eth0="-nw"
#dhclient_eth0="-nw"
dns_servers_eth0="195.14.50.1 195.14.50.21"
dns_servers_eth0="195.14.50.1 195.14.50.21"
#dns_servers_eth0="213.234.192.8 85.21.192.3"
 
dns_search_eth0="corbina.ru"
dns_search_eth0="corbina.ru"
fallback_eth0=( "10.134.41.247 netmask 255.255.248.0" )
fallback_eth0="10.134.41.247 netmask 255.255.248.0"


#bred polnyj - ne trogat
#bred polnyj - ne trogat
Строка 61: Строка 65:


# lokalnye resursy
# lokalnye resursy
routes_eth0=(
routes_eth0="
     "195.14.50.1 via $GATEWAY"
     195.14.50.1 via $GATEWAY
     "195.14.50.21 via $GATEWAY"
     195.14.50.21 via $GATEWAY
     "85.21.138.214 via $GATEWAY"
     85.21.138.214 via $GATEWAY
     "85.21.138.210 via $GATEWAY"
     85.21.138.210 via $GATEWAY
     "85.21.88.130 via $GATEWAY"
     85.21.88.130 via $GATEWAY
     "85.21.52.254 via $GATEWAY"
     85.21.52.254 via $GATEWAY
  # "85.21.138.208/28 via $GATEWAY" #
    85.21.138.208 via $GATEWAY
  #  "83.102.146.96/27 via $GATEWAY" #
    83.102.146.96 via $GATEWAY
    78.107.23.0/24 via $GATEWAY
    195.14.50.16 via $GATEWAY
    195.14.50.26 via $GATEWAY
    89.179.135.67 via $GATEWAY
    62.205.179.146 via $GATEWAY
    85.21.79.38 via $GATEWAY
    10.0.0.0/8 via $GATEWAY
    85.21.79.0/24 via $GATEWAY
    85.21.90.0/24 via $GATEWAY
    85.21.72.80 via $GATEWAY
    195.14.50.93 via $GATEWAY
    78.107.69.98 via $GATEWAY
    224.0.0.0/4 via $GATEWAY
    172.16.16.0/24 via $GATEWAY
    233.32.240.0/24 via $GATEWAY
    "


    "85.21.138.208 via $GATEWAY" #
    "83.102.146.96 via $GATEWAY" #


config_ppp0="ppp"
#link_ppp0="pty 'pptp vpn.corbina.net --nolaunchpppd --nobuffer --loglevel 0'"
link_ppp0="pty 'xl2tpd'"
username_ppp0='YOUR_USERNAME'
password_ppp0='YOUR_PASSWORD'


    "78.107.23.0/24 via $GATEWAY"
    "195.14.50.16 via $GATEWAY"
    "195.14.50.26 via $GATEWAY"
    "89.179.135.67 via $GATEWAY"
    "62.205.179.146 via $GATEWAY"
    "85.21.79.38 via $GATEWAY"
    "10.0.0.0/8 via $GATEWAY"
    "85.21.79.0/24 via $GATEWAY"
    "85.21.90.0/24 via $GATEWAY"
#    "85.21.72.80/28 via $GATEWAY" #


    "85.21.72.80 via $GATEWAY" #
pppd_ppp0="
name corbina
remotename l2tp
ipparam corbina
connect /bin/true


    "195.14.50.93 via $GATEWAY"
nodeflate
    "78.107.69.98 via $GATEWAY"
nobsdcomp
    "224.0.0.0/4 via $GATEWAY"
nopcomp
    "172.16.16.0/24 via $GATEWAY"
noaccomp
    "233.32.240.0/24 via $GATEWAY"
 
)
noauth


config_ppp0=( "ppp" )
user YOUR_USERNAME
#link_ppp0="pty 'pptp vpn.corbina.net --nolaunchpppd --nobuffer --loglevel 0'"
password YOUR_PASSWORD
link_ppp0="pty 'xl2tpd'"
 
username_ppp0='YOUR_USERNAME'
mru 1500
password_ppp0='YOUR_PASSWORD'
mtu 1460
pppd_ppp0=(
 
        #"nodefaultroute"
nodefaultroute
#izmenil nodefaultroute na defaultroute t.k. ranshe ne pahalo avtomaticheskoe dobavlenie marshrutov zi-za gluka v pppd_ppp0
lock
        "defaultroute"
 
#ubral usepeerdns t.k. DHCP server vydae`t ne vernye dannye i my DNS propisyvaem ze`stko
debug
        #"usepeerdns"
 
        "lock"
persist
        "noauth"
maxfail 0
# ubiraem kompressiju
holdoff 10
        "noaccomp"
lcp-echo-interval 10
#noaccomp disables address/control compression in both directions.
lcp-echo-failure 10"
        "nopcomp"
 
#nopcomp disables protocol field compression negotiation, in both the receive and the transmit direction
metric_ppp0=0
# zapretit vse` krome MSCHAPv2
        "refuse-eap"
        "refuse-chap"
        "refuse-mschap"
# zapretit protokoly szatija
        "nobsdcomp"
        "nodeflate"
        "debug"
#perepodnimat do upora
        "persist"
        "maxfail 0"
# vremia v sekundah mezdu popytkami perepodniatija upavshego VPN
        "holdoff 10"
# Cherez kakoj interval vremeni v sekundah posylat zaprosy chtoby proverit ziv li kanal ili net
        "lcp-echo-interval 10"
# esli lcp-echo-failure pingov ne proshlo znachit kanal otvalilsia i ego nado perepodnimat
        "lcp-echo-failure 9"
)


preup() {
preup() {
Строка 143: Строка 142:
     if [ "${IFACE}" = "eth0" ]; then
     if [ "${IFACE}" = "eth0" ]; then
# adresa VPN servakov berutsia s DNS-servera Korbiny
# adresa VPN servakov berutsia s DNS-servera Korbiny
         for vpnaddr in $(host vpn.corbina.net | grep has | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
         for vpnaddr in $(host vpn.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
         for vpnaddr in $(host tp.corbina.net | grep has | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
         for vpnaddr in $(host tp.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
     fi
     fi


Строка 152: Строка 151:
         VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
         VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
         route del $VPN dev ppp0
         route del $VPN dev ppp0
#udalenie shluza po umolchaniju v lokalku i dobavlenie shluza po umolchaniju v inet
#udalenie shluza po umolchaniju v lokalku i dobavlenie shluza po umolchaniju d inet
         route del default
         route del default
         route add default dev ppp0
         route add default dev ppp0
Строка 220: Строка 219:
ipparam corbina
ipparam corbina
connect /bin/true
connect /bin/true
nodeflate
nodeflate
nobsdcomp
nobsdcomp
persist
maxfail 0
nopcomp
nopcomp
noaccomp
noaccomp
nodefaultroute
mru 1460
mtu 1460
noauth
noauth
user YOUR_USERNAME
user YOUR_USERNAME
password YOUR_PASSWORD
password YOUR_PASSWORD
mru 1500
mtu 1460
nodefaultroute
lock
debug
persist
maxfail 0
holdoff 10
lcp-echo-interval 10
lcp-echo-failure 10
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Строка 262: Строка 273:
{{root|/etc/init.d/iptables save}} и рестартуем IpTables
{{root|/etc/init.d/iptables save}} и рестартуем IpTables
{{root|/etc/init.d/iptables.restart}}
{{root|/etc/init.d/iptables.restart}}
{{note|Для настройки '''StaticNAT''' и '''Masquerade''' можно выполнить вот [[NAT_and_MASQUERADE_using_IpTables_on_dedicated_home_server_powered_by_Gentoo_linux|эти]] рекомендации}}


==Настройка переподнятия интерфейса в случае его падения==
==Настройка переподнятия интерфейса в случае его падения==
Строка 282: Строка 295:


==Недостатки данного подхода настройки нтернета==
==Недостатки данного подхода настройки нтернета==
===Мусор в логах===
Данный способ настройки интернета в Корбине в принципе более чем хороший, работает отлично, обеспечивал мне, по крайней мере, долгую и хорошую бесперибойную работу. Однако, у него замечен один недостаток - он очень много пишет в логи разного рода мусора и различных ворнингов. Как я понял из сообщений он создаёт новый интерфейс, потом убивает его видимо.
Данный способ настройки интернета в Корбине в принципе более чем хороший, работает отлично, обеспечивал мне, по крайней мере, долгую и хорошую бесперибойную работу. Однако, у него замечен один недостаток - он очень много пишет в логи разного рода мусора и различных ворнингов. Как я понял из сообщений он создаёт новый интерфейс, потом убивает его видимо.


Строка 297: Строка 311:


И так несколько раз в минуту. Логи растут быстро ;). Как решить эту проблему и откуда она берётся я так и не смог понять.
И так несколько раз в минуту. Логи растут быстро ;). Как решить эту проблему и откуда она берётся я так и не смог понять.
===Логин и пароль===
Так же серьёзным минусов является хранящиеся в открытом виде логин и пароль! Обратите на это внимание!


==Ссылки==
==Ссылки==
Строка 302: Строка 319:
* [http://www.opennet.ru/base/net/pppoe_mtu.txt.html Решение] проблемы MTU и PPPoE
* [http://www.opennet.ru/base/net/pppoe_mtu.txt.html Решение] проблемы MTU и PPPoE
* [http://man.ddvip.com/net/iptables-tutorial/x4700.html TCPMSS]
* [http://man.ddvip.com/net/iptables-tutorial/x4700.html TCPMSS]
* [http://help.internet.beeline.ru/internet/techinfo/ Техническая] информация о сети Корбина Телеком.
* [http://help.internet.beeline.ru/pro Техническая] информация о сети Корбина Телеком.
* [http://ru.gentoo-wiki.com/wiki/Настройка_VPN-соединения VPN] Gentoo Wiki


[[Category:Index]]
[[Category:Index]]
[[Category:Linux]]
[[Category:Linux]]

Текущая версия на 16:25, 29 июля 2015

Провайдер Corbina Telecom (ныне принадлежит Вымпелкому) работает по технологии VPN. Начал пользоваться этим замечательным провайдером в декабре 2007 года, но вот статью по настройке соединения пишу только сейчас, и то потому, что со дня на день собираюсь уйти в Onlime, которая работает по технологии DHCP.

Предварительные настройки gentoo для работы по vpn

Сперва необходимо поставить все необходимые пакеты, для успешной работы в Корбине.

Используя стандартный emerge ставим эти пакеты.

emerge net-misc/dhcp
emerge net-dialup/ppp
emerge net-dialup/pptpclient
emerge net-dns/bind-tools
emerge net-dialup/xl2tpd

Теперь переходим к настройке конфигурационных файлов. Всех тех служб, которые мы установили.

Конфигурационные файлы и службы, которые надо настроить

Для корректной работы интернета нам потребуются следующие конфигурационные файлы:

  • /etc/dhcp/dhclient.conf
  • /etc/conf.d/net
  • /etc/xl2tpd/xl2tpd.conf
  • /etc/ppp/options.l2tp

Причём, если такого файла у вас нет изначально, то создайте его!

Начнём с настройки DHCP клиента

nano /etc/dhcp/dhclient.conf
File: /etc/dhcp/dhclient.conf
timeout 40;
retry 30;
request subnet-mask, broadcast-address, time-offset, routers;

Самое интересное - основные сетевые настройки - NET

Старая версия конфигурационных файлов до перехода на OpenRC.

nano /etc/conf.d/net
File: /etc/conf.d/net
dns_domain_lo="homenetwork"
config_eth1="192.168.0.1 netmask 255.255.255.0"
#mtu_eth1=1500

GATEWAY="10.134.40.1"
modules="dhclient"
config_eth0="dhcp"
dhcp_eth0="nontp"
#avtoperehod v demona
#dhclient_eth0="-nw"
dns_servers_eth0="195.14.50.1 195.14.50.21"

dns_search_eth0="corbina.ru"
fallback_eth0="10.134.41.247 netmask 255.255.248.0"

#bred polnyj - ne trogat
#dhcp_eth0="nogateway"

# lokalnye resursy
routes_eth0="
    195.14.50.1 via $GATEWAY
    195.14.50.21 via $GATEWAY
    85.21.138.214 via $GATEWAY
    85.21.138.210 via $GATEWAY
    85.21.88.130 via $GATEWAY
    85.21.52.254 via $GATEWAY
    85.21.138.208 via $GATEWAY
    83.102.146.96 via $GATEWAY
    78.107.23.0/24 via $GATEWAY
    195.14.50.16 via $GATEWAY
    195.14.50.26 via $GATEWAY
    89.179.135.67 via $GATEWAY
    62.205.179.146 via $GATEWAY
    85.21.79.38 via $GATEWAY
    10.0.0.0/8 via $GATEWAY
    85.21.79.0/24 via $GATEWAY
    85.21.90.0/24 via $GATEWAY
    85.21.72.80 via $GATEWAY
    195.14.50.93 via $GATEWAY
    78.107.69.98 via $GATEWAY
    224.0.0.0/4 via $GATEWAY
    172.16.16.0/24 via $GATEWAY
    233.32.240.0/24 via $GATEWAY
    "


config_ppp0="ppp"
#link_ppp0="pty 'pptp vpn.corbina.net --nolaunchpppd --nobuffer --loglevel 0'"
link_ppp0="pty 'xl2tpd'"
username_ppp0='YOUR_USERNAME'
password_ppp0='YOUR_PASSWORD'


pppd_ppp0="
name corbina
remotename l2tp
ipparam corbina
connect /bin/true

nodeflate
nobsdcomp
nopcomp
noaccomp

noauth

user YOUR_USERNAME
password YOUR_PASSWORD

mru 1500
mtu 1460

nodefaultroute
lock

debug

persist
maxfail 0
holdoff 10
lcp-echo-interval 10
lcp-echo-failure 10"

metric_ppp0=0

preup() {
if [ "${IFACE}" = "ppp0" ]; then
    /bin/mknod /dev/ppp c 108 0
    route del default
fi
return 0
}

postup() {
    if [ "${IFACE}" = "eth0" ]; then
# adresa VPN servakov berutsia s DNS-servera Korbiny
        for vpnaddr in $(host vpn.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
        for vpnaddr in $(host tp.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth0; done;
    fi

    if [ "${IFACE}" = "ppp0" ]; then
# iz-za togo chto adres VPN servera sovpadaet s adresom shluza to sozdavaemyj avtomaticheski
#  marshrut k VPN serveru ispolzuet inerfejs ppp0 a ne eth0 - ispravliaem
        VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
        route del $VPN dev ppp0
#udalenie shluza po umolchaniju v lokalku i dobavlenie shluza po umolchaniju d inet
        route del default
        route add default dev ppp0
    fi

return 0
}


postdown() {
# dobavlenie marshruta po umolchaniju v lokalku
    if [ "${IFACE}" = "ppp0" ]; then
       killall xl2tpd pppd
        route add default dev eth0
    fi
return 0
}


# pered zapuskom VPN dolzen byt podniat eth0
depend_ppp0() {
        need net.eth0
}
Note: Файл постарался где возможно снабдить комментариями. Часть строчек (закомментированных осталась с прошлой версии конфигурационного файла, и вполне возможно их удалить. Оставил их, т.к. возможно к ним прийдётся отказтится в будущем в случае каких-то неожиданностей.

Под себя нужно в конфиге изменить:

  • eth0 - название сетевого интерфейса
  • fallback_eth0 - адрес, назначаемый в случае неполучения его по dhcp (можно взять из своих же, выданных ранее).
  • username_ppp0='Ваш логин в корбине'
  • password_ppp0='Ваш пароль в корбине'
  • GATEWAY - шлюз по умолчанию

Так же для избежание автоматического запуска необходимо переименовать или перенести в другое место файлы /etc/ppp/ip-up.local и /etc/ppp/ip-down.local

Note: Обратите внимание - первой строчкой у меня происходит попутная конфигурация интерфейса eth1, т.к. дело происходит на моём внутреннм домашнем сервачке и он попутно раздаёт инет на мой дом.

Конфигурирование L2TP

nano /etc/xl2tpd/xl2tpd.conf
File: /etc/xl2tpd/xl2tpd.conf
[global]
access control = yes

[lac corbina]
lns = tp.corbina.net
redial = yes
redial timeout = 10
require chap = yes
require authentication = no
name = YOUR_USERNAME
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tp
refuse pap = yes
autodial = yes
Note: Опять же под себя измените ваш логин в Корбине.

Ну и последний конфиг L2TP.

nano /etc/ppp/options.l2tp
File: /etc/ppp/options.l2tp
name corbina
remotename l2tp
ipparam corbina
connect /bin/true
 
nodeflate
nobsdcomp
nopcomp
noaccomp
 
noauth
 
user YOUR_USERNAME
password YOUR_PASSWORD
 
mru 1500
mtu 1460
 
nodefaultroute
lock
 
debug
 
persist
maxfail 0
holdoff 10
lcp-echo-interval 10
lcp-echo-failure 10

Пароль и логин меняем на свой!

Настраиваем автозапуск

Добавляем в автозапуск нашу ppp0 службу. То есть по сути создаваемый нами сетевой интерфейс ppp0 должен запускаться =).

rc-update add net.ppp0 default

Настройка FireWall IpTables (ppp и mtu)

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

Однако, если ваш компьютер ещё попутно выполняет функции сервера, то тут будут проблемы. Сам ваш сервер будет выходить на любые сайты, а вот компьютеры, которым он раздаёт интернет не смогут этого сделать. Симпотому будут примерно такие:

  1. Все сайты пингуются
  2. Некоторые даже открываются с невероятными задержками и скрипами
  3. Некоторые сайты открываются на половину. То есть успевет дойти часть HTML кода до вас в виде http заголовков.

Сколько же времени я потратил и намучался с этой проблемой. Просто врагу не пожелаешь такого гемороя. И главное не ясно что и где копать и рыть. В итоге оказалось, что MTU у технологии PPP не 1500 как обычно. Если посмотреть в конфигурационные файлы выше, то можно созерцать цифру 1460.

Note: Или выполнить
ifconfig

Для решения этой проблемы в ваш фаерволл IpTables надо добавить следующее правило:

iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Note: Мы добавляем правило в цепочку forward в её конец, которая пакеты в цепочке forward идущие с интерфейса ppp0 (тоесть с инета) по протоколу tcp с флагами tcp SYN,RST SYN будет по размеру подгонятся к pmtu.

Более подробно прочитать про эту проблему можно вот тут, а здесь можно узать более подробно, что такое TCPMSS

Далее сохраняем внесённые изменения

/etc/init.d/iptables save

и рестартуем IpTables

/etc/init.d/iptables.restart
Note: Для настройки StaticNAT и Masquerade можно выполнить вот эти рекомендации

Настройка переподнятия интерфейса в случае его падения

Вообще указанные выше конфигурационные файлы должны делать всю работу сами, однако, как это часто бывает "должны", но не делают. Для этого я в Cron добавил следующую задачу, которая автоматом раз в 10 минут проверяет, если пинг до яндекса и, если его нет, переподнимает наш интерфейс.

nano /etc/crontab
File: /etc/crontab
*/10 * * * *      (ping ya.ru -c 5 | grep "rtt min/avg/max/mdev" ) || /etc/init.d/net.ppp0 restart

После внесения изменений в настройки крона - делаем его рестарт:

crontab /etc/crontab

Возможные ошибки

Различные ошибки, баги и косяки, которые могут возникнуть при работе по впн Корбины.

Зависание конекта по L2TP

Основная ошибка которая может возникать это не верное срабатывание соединения по l2tp с VPN сервером - tp.corbina.net. В таком случае есть смысл либо несколько раз переконекчиваться в надежде что DNS сбросит на рабочий сервак либо попробовать вот эти адреса l2tp серверов: 85.21.0.251-255

Недостатки данного подхода настройки нтернета

Мусор в логах

Данный способ настройки интернета в Корбине в принципе более чем хороший, работает отлично, обеспечивал мне, по крайней мере, долгую и хорошую бесперибойную работу. Однако, у него замечен один недостаток - он очень много пишет в логи разного рода мусора и различных ворнингов. Как я понял из сообщений он создаёт новый интерфейс, потом убивает его видимо.

File: /var/log/syslog
Jan 26 03:25:26 router_a pppd[7291]: using channel 35023
Jan 26 03:25:26 router_a pppd[7291]: Couldn't allocate PPP unit 0 as it is already in use
Jan 26 03:25:26 router_a pppd[7291]: Using interface ppp1
Jan 26 03:25:26 router_a pppd[7291]: Connect: ppp1 <--> /dev/pts/1
Jan 26 03:25:26 router_a xl2tpd[26112]: init_network: Unable to bind socket: Address already in use. Terminating.
Jan 26 03:25:26 router_a pppd[7291]: Modem hangup
Jan 26 03:25:26 router_a pppd[7291]: Connection terminated.
Jan 26 03:25:27 router_a pppd[7291]: Script xl2tpd finished (pid 26112), status = 0x1
Jan 26 03:25:32 router_a dhclient: DHCPREQUEST on eth0 to 83.102.233.205 port 67

И так несколько раз в минуту. Логи растут быстро ;). Как решить эту проблему и откуда она берётся я так и не смог понять.

Логин и пароль

Так же серьёзным минусов является хранящиеся в открытом виде логин и пароль! Обратите на это внимание!

Ссылки

  • Тема в форуме Корбины, которая легла в основу данного мануала.
  • Решение проблемы MTU и PPPoE
  • TCPMSS
  • Техническая информация о сети Корбина Телеком.
  • VPN Gentoo Wiki