Данный материал протестированн для ubuntu 10.10 и ubuntu 12.4 .
Возникла необходимость присоединения клиентов из интернет к нашей локальной сети через VPN (virtual private network) подключение. В сети обнаружилось довольно простое решение на базе ubuntu и pptpd, настрока и установка которого не заняла много времени.
Установка PPTP сервера сводится к установке пакета
После установки необходимо отредактировать конфигурационный файл:
Внести в него изменения раскоментировав строки:
Данные строчки назначат адрес сетевого интерфейса сервера: 192.168.0.1 а подключившимся клиентам ip дареса из диапазона от 100 до 200
Необходимо также отредактировать файл с опциями и прописать адреса dns серверов которые назначаются подключившимся клиентам в нашем случае указываем dns от google с адресами 8.8.8.8:
И вносим изменения раскоментировав строки
Так же необходимо отредактировать файл где хранятся имена, пароли и ip адреса назначаемые клиентам:
Внесем изменения в файл отредактировав его таким образом
После настройки можно перезапустить сервер PPTPD :
Серевер запустился и работает, необходимо настроить форвардинг IP (перенаправление)
. Редактируем еще один файл :
Находим строчку net.ipv4.ip_forward и устанавливаем значение 1:
Перечитаем системные изменения настроек в конфигурационном файле:
Для того что бы дать возможность подключенным клиентам видеть внутреннюю локальную сеть необходимо настроить NAT с помощью межсетевого экрана iptables .
Выполним две команды:
После всех выполненных действий можно проверить ходят ли пакеты в локальную сеть а также в интернет (при условии что сетевой интерфейс eth0 сконфигурирован стандартно и настроен на работу через шлюз и находится в подсети 192.168.0.0/24 ).
Отлично, все хорошо и работает до перезагрузги компьютера, есть в ubuntu один недочет который мы поправим. Iptables по умолчанию не сохраняет правила заданные командами и при перезагрузке их неоткуда востановить и он запускается с пустой таблицей по умолчанию.
В системе Redhat есть удобная команда : service iptables save
после которой файл с настройками сохраняется и при перезагрузке системы сам считывает сохраненные правила и загружает их в таблицу - очень удобно.
Шаг 1: Создадим файл
Шаг 2: Редактируем файл
Шаг 3: Вставить этот кусок кода в файл
--------------------------------------------
#! /bin/sh
### BEGIN INIT INFO
# Provides: iptables
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start: 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Linux firewall initialisation and save
# Description: this script is for configuring linux firewall (netfilter)
# with help of command-line utility called iptables
### END INIT INFO
#set -e
DAEMON=/sbin/iptables
ipt=$DAEMON
test -x $DAEMON || exit 0
if [ ! -d /etc/iptables ]; then
mkdir /etc/iptables
fi
if [ ! -f /etc/iptables/rules.save ]; then
/sbin/iptables-save -c > /etc/iptables/rules.save
fi
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting linux firewall" "iptables"
cat /etc/iptables/rules.save | iptables-restore -c
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping linux firewall" "iptables"
/sbin/iptables-save > /etc/iptables/rules.save
for table in filter nat mangle
do
$ipt -t $table -F
$ipt -t $table -X
$ipt -t $table -Z
done
$ipt -P FORWARD ACCEPT
$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
log_end_msg 0
;;
restart)
#Restart is disabling all active rules and loads firewall rules from previously saved file
log_daemon_msg "Restarting firewall..." "iptables"
log_daemon_msg "Dropping rules" "iptables"
#Dropping current rules
for table in filter nat mangle
do
$ipt -t $table -F
$ipt -t $table -X
$ipt -t $table -Z
done
$ipt -P FORWARD ACCEPT
$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
log_daemon_msg "Reloading previously saved rules" "iptables"
cat /etc/iptables/rules.save | iptables-restore -c
log_end_msg 0
;;
status)
log_daemon_msg "Not implemented" "iptables"
log_end_msg 0
;;
save)
log_daemon_msg "Saving firewall rules"
/sbin/iptables-save > /etc/iptables/rules.save
log_end_msg 0
;;
*)
echo "Usage: /etc/init.d/iptables {start|stop|restart|save}"
exit 1
esac
exit 0
-------------------------------------
Шаг 4: После сохранения файла сделать его исполняемым и назначить фладельца root
Шаг 5: Добавим скрипт в автозагрузку:
При запуске системы правила автоматически стартуют
Скрипт считывает их из этого файла:
Если имеются замечания и недочеты, пишите в коментариях а я подправлю.
Возникла необходимость присоединения клиентов из интернет к нашей локальной сети через VPN (virtual private network) подключение. В сети обнаружилось довольно простое решение на базе ubuntu и pptpd, настрока и установка которого не заняла много времени.
Установка PPTP сервера сводится к установке пакета
#sudo apt-get install pptpd
После установки необходимо отредактировать конфигурационный файл:
#sudo nano /etc/pptpd.conf
Внести в него изменения раскоментировав строки:
localip 192.168.0.1 remoteip 192.168.0.100-200
Данные строчки назначат адрес сетевого интерфейса сервера: 192.168.0.1 а подключившимся клиентам ip дареса из диапазона от 100 до 200
Необходимо также отредактировать файл с опциями и прописать адреса dns серверов которые назначаются подключившимся клиентам в нашем случае указываем dns от google с адресами 8.8.8.8:
#sudo nano /etc/ppp/pptpd-options
И вносим изменения раскоментировав строки
ms-dns 8.8.8.8 ms-dns 8.8.4.4
Так же необходимо отредактировать файл где хранятся имена, пароли и ip адреса назначаемые клиентам:
#sudo nano /etc/ppp/chap-secrets
Внесем изменения в файл отредактировав его таким образом
# client server secret IP addresses username * myPassword "192.168.0.200"
После настройки можно перезапустить сервер PPTPD :
#/etc/init.d/pptpd restart
Серевер запустился и работает, необходимо настроить форвардинг IP (перенаправление)
. Редактируем еще один файл :
#sudo nano /etc/sysctl.conf
Находим строчку net.ipv4.ip_forward и устанавливаем значение 1:
net.ipv4.ip_forward=1
Перечитаем системные изменения настроек в конфигурационном файле:
#sudo sysctl -p
Для того что бы дать возможность подключенным клиентам видеть внутреннюю локальную сеть необходимо настроить NAT с помощью межсетевого экрана iptables .
Выполним две команды:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
После всех выполненных действий можно проверить ходят ли пакеты в локальную сеть а также в интернет (при условии что сетевой интерфейс eth0 сконфигурирован стандартно и настроен на работу через шлюз и находится в подсети 192.168.0.0/24 ).
Отлично, все хорошо и работает до перезагрузги компьютера, есть в ubuntu один недочет который мы поправим. Iptables по умолчанию не сохраняет правила заданные командами и при перезагрузке их неоткуда востановить и он запускается с пустой таблицей по умолчанию.
В системе Redhat есть удобная команда : service iptables save
после которой файл с настройками сохраняется и при перезагрузке системы сам считывает сохраненные правила и загружает их в таблицу - очень удобно.
Шаг 1: Создадим файл
#sudo touch /etc/init.d/iptables
Шаг 2: Редактируем файл
#sudo nano /etc/init.d/iptables
Шаг 3: Вставить этот кусок кода в файл
--------------------------------------------
#! /bin/sh
### BEGIN INIT INFO
# Provides: iptables
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start: 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Linux firewall initialisation and save
# Description: this script is for configuring linux firewall (netfilter)
# with help of command-line utility called iptables
### END INIT INFO
#set -e
DAEMON=/sbin/iptables
ipt=$DAEMON
test -x $DAEMON || exit 0
if [ ! -d /etc/iptables ]; then
mkdir /etc/iptables
fi
if [ ! -f /etc/iptables/rules.save ]; then
/sbin/iptables-save -c > /etc/iptables/rules.save
fi
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting linux firewall" "iptables"
cat /etc/iptables/rules.save | iptables-restore -c
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping linux firewall" "iptables"
/sbin/iptables-save > /etc/iptables/rules.save
for table in filter nat mangle
do
$ipt -t $table -F
$ipt -t $table -X
$ipt -t $table -Z
done
$ipt -P FORWARD ACCEPT
$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
log_end_msg 0
;;
restart)
#Restart is disabling all active rules and loads firewall rules from previously saved file
log_daemon_msg "Restarting firewall..." "iptables"
log_daemon_msg "Dropping rules" "iptables"
#Dropping current rules
for table in filter nat mangle
do
$ipt -t $table -F
$ipt -t $table -X
$ipt -t $table -Z
done
$ipt -P FORWARD ACCEPT
$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
log_daemon_msg "Reloading previously saved rules" "iptables"
cat /etc/iptables/rules.save | iptables-restore -c
log_end_msg 0
;;
status)
log_daemon_msg "Not implemented" "iptables"
log_end_msg 0
;;
save)
log_daemon_msg "Saving firewall rules"
/sbin/iptables-save > /etc/iptables/rules.save
log_end_msg 0
;;
*)
echo "Usage: /etc/init.d/iptables {start|stop|restart|save}"
exit 1
esac
exit 0
-------------------------------------
Шаг 4: После сохранения файла сделать его исполняемым и назначить фладельца root
#chown root:root /etc/init.d/iptables
#chmod u+x /etc/init.d/iptables
Шаг 5: Добавим скрипт в автозагрузку:
#update-rc.d iptables defaults
После всех выполненных действий можно писать правила и сохранять их командой
#/etc/init.d/iptables save
При запуске системы правила автоматически стартуют
#/etc/init.d/iptables start
Скрипт считывает их из этого файла:
#/etc/iptables/rules.save
Если имеются замечания и недочеты, пишите в коментариях а я подправлю.
Комментариев нет:
Отправить комментарий