SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
Список вопросов ПечатьМетки: arch linux l2tp vpn dhcp маршрутизация
RemiZOffAlex Создано: 2017-08-05 21:13:06.287489 Обновлено: 2017-08-05 21:13:06.287489 |
---|
Установка необходимых пакетов pacman -S iptables xl2tpd dhclient Замена dhcpcd на dhclient в Arch Linux pacman -S dhclient cat << EOF >> /etc/netctl/hooks/dhcp #!/bin/sh DHCPClient='dhclient' EOF Файл /etc/dhclient-exit-hooks #!/bin/sh if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then rfc_routes=($new_rfc3442_classless_static_routes) for(( i=0; i < ${#rfc_routes[@]}; )); do net_length=${rfc_routes[$i]} ((i++)) net_address=(0 0 0 0) for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do net_address[$j]=${rfc_routes[$i]} done gateway=(0 0 0 0) for (( j=0; j < 4; j++, i++ )); do gateway[$j]=${rfc_routes[$i]} done old_IFS="$IFS" IFS='.' if [[ -n "$(which ip 2>/dev/null)" ]]; then ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}" else if [[ -n "$(which route 2>/dev/null)" ]]; then if [ x"$net_length" == x"32" ]; then route add -host "${net_address[*]}" gw "${gateway[*]}" else route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}" fi fi fi IFS="$old_IFS" done fi fi if [ x"$new_ms_classless_static_routes" != x"" ]; then if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then ms_routes=($new_ms_classless_static_routes) for(( i=0; i < ${#ms_routes[@]}; )); do net_length=${ms_routes[$i]} ((i++)) net_address=(0 0 0 0) for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do net_address[$j]=${ms_routes[$i]} done gateway=(0 0 0 0) for (( j=0; j < 4; j++, i++ )); do gateway[$j]=${ms_routes[$i]} done old_IFS="$IFS" IFS='.' if [[ -n "$(which ip 2>/dev/null)" ]]; then ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}" else if [[ -n "$(which route 2>/dev/null)" ]]; then if [ x"$net_length" == x"32" ]; then route add -host "${net_address[*]}" gw "${gateway[*]}" else route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}" fi fi fi IFS="$old_IFS" done fi fi Устанавливаем права на выполнение chmod a+x /etc/dhclient-exit-hooks Файл /etc/dhclient.conf timeout 60; retry 60; reboot 10; select-timeout 5; initial-interval 2; send host-name "my.pc"; option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; option ms-classless-static-routes code 249 = array of unsigned integer 8; request subnet-mask, broadcast-address, time-offset, routers, static-routes, domain-name-servers, interface-mtu, rfc3442-classless-static-routes, ms-classless-static-routes; Файл /etc/xl2tpd/xl2tpd.conf [global] access control = yes auth file = /etc/ppp/chap-secrets [lac beeline] lns = tp.internet.beeline.ru redial = yes redial timeout = 5 require chap = yes require authentication = no name = <LOGIN BEELINE> ppp debug = no pppoptfile = /etc/ppp/peers/options.xl2tpd require pap = no autodial = yes tx bps = 1000000000 Файл /etc/ppp/peers/options.xl2tpd lcp-echo-interval 10 lcp-echo-failure 2 name <LOGIN BEELINE> remotename l2tp ipparam corbina mtu 1460 nodeflate nobsdcomp persist maxfail 0 nopcomp noaccomp noauth noproxyarp Файл /etc/ppp/chap-secrets <LOGIN BEELINE> * <PASSWORD> Файл /etc/ppp/options logfile /var/log/xl2tpd.log mru 1460 mtu 1460 noauth nodeflate nobsdcomp novj novjccomp noipx nomp lcp-echo-failure 10 lcp-echo-interval 60 Файл /etc/ppp/ip-up.d/0010beeline-up.sh #!/bin/sh # Parameters: interface-name tty-device speed local-IP-address remote-IP-address ipparam GW=`/usr/bin/ip route | /usr/bin/grep default | /usr/bin/awk '{ print $3 }'` echo $GW > /tmp/gateway /usr/bin/ip route del default /usr/bin/ip route add $5 via $GW # Route DNS for i in $(grep "^nameserver" /etc/resolv.conf | awk '{print $2}'); do /usr/bin/ip route add $i via $GW done # Route tp.internet.beeline.ru for i in $(/usr/bin/host tp.internet.beeline.ru | /usr/bin/awk '{print $4}' | /usr/bin/xargs); do /usr/bin/ip route add $i via $GW done /usr/bin/ip route add default dev $1 # Для шлюза /usr/bin/iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu /usr/bin/iptables -t nat -F /usr/bin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j SNAT --to-source $4 Файл /etc/ppp/ip-down.d/0010beeline-down.sh #!/bin/sh GW=`cat /tmp/gateway` /usr/bin/ip route del default /usr/bin/ip route add default via $GW # Для шлюза /usr/bin/iptables -t nat -F /usr/bin/iptables -t nat -A POSTROUTING -o enp2s1 -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE |