| |
— | wiki:articles:3g141 [14/01/2014 16:56] (текущий) – создано - внешнее изменение 127.0.0.1 |
---|
| ^**3G в SlackWare 14.1 при помощи vwdial**^ |
| |
| [[http://wiki.slackware.su/wiki:articles:smini | В одной из прошлых статей]] я описывал минимальную конфигурацию //SlackWare 14.1// для работы в качестве серверной системы. Сегодня изложу свой опыт настройки //3G// интернета от Мегафон с передачей его в локальную сеть. И, как правило, нам будет необходим автозапуск всего этого дела. |
| |
| =====Установка зависимостей===== |
| |
| Для функционирования системы нам понадобятся следующие пакеты из дистрибутива //SlackWare 14.1// и зависимости к ним: |
| |
| <code>a/usb_modeswitch |
| l/libnl3 |
| l/libpcap |
| l/libusb |
| l/libusb-compat |
| n/iptables |
| n/ppp |
| </code> |
| Следующие пакеты необходимо будет собрать самостоятельно, я делал это на отдельной машине: |
| |
| [[http://slackbuilds.org/repository/14.1/libraries/wvstreams/ | wvstreams]] |
| [[http://slackbuilds.org/repository/14.1/network/wvdial/ | wvdial]] |
| |
| Устанавливаем все в следующей последовательности: |
| |
| - l/* |
| - a/usb_modeswitch |
| - n/iptables |
| - n/ppp |
| - wvstreams |
| - wvdial |
| |
| |
| =====Настройка системы===== |
| |
| ====Запуск wvdial==== |
| |
| ===Конфигурация wvdial=== |
| <code> |
| [Dialer Defaults] |
| Modem = /dev/ttyUSB0 |
| Init1 = ATZ |
| Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 |
| Stupid Mode = yes |
| Modem Type = Analog Modem |
| Phone = *99# |
| New PPPD = yes |
| ISDN = 0 |
| Username = gdata |
| Password = gdata |
| Baud = 9600 |
| </code> |
| <note tip>Конфигурация для сети Мегафон</note> |
| ===Сценарий запуска /etc/rc.d/rc.wvdial=== |
| <code> |
| #! /bin/sh |
| ### BEGIN INIT INFO |
| # Required-Start: |
| # Required-Stop: |
| # Default-Start: 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Provides: wvdial |
| # Short-Description: wvdial boot-script |
| # Description: This script establish ppp-connection via wvdial |
| ### END INIT INFO |
| |
| # PATH should only include /usr/* if it runs after the mountnfs.sh script |
| PATH=/usr/bin |
| DESC="wvdial daemon connection" |
| NAME=wvdial |
| DAEMON=/usr/bin/$NAME |
| DAEMON_ARGS="--options args" |
| PIDFILE=/var/run/$NAME.pid |
| SCRIPTNAME=/etc/rc.d/rc.$NAME |
| |
| # Exit if the package is not installed |
| [ -x "$DAEMON" ] || exit 0 |
| |
| case "$1" in |
| start) |
| /usr/bin/wvdial > /dev/null 2>&1 & |
| ;; |
| stop) |
| killall wvdial |
| killall pppd |
| ;; |
| *) |
| echo "Usage: $SCRIPTNAME {start|stop}" >&2 |
| exit 3 |
| ;; |
| esac |
| |
| exit 0 |
| </code> |
| |
| ===Делаем сценарий исполняемым=== |
| |
| <code>chmod 755 /etc/rc.d/rc.wvdial</code> |
| |
| ===Прописываем скрипт в автозапуск. Для этого в /etc/rc.d/rc.inet2 добавляем строки=== |
| <code> |
| if [ -x /etc/rc.d/rc.wvdial ]; then |
| . /etc/rc.d/rc.wvdial start |
| fi</code> |
| ====Включение маршрутизации==== |
| |
| ===Включаем проброс пакетов между интерфейсами=== |
| <code> |
| сhmod 775 /etc/rc.d/rc.ip_forward |
| </code> |
| |
| ====Настройка ppp==== |
| |
| Задача: после поднятия интерфейса //ppp0// (мегафоновское подключение) активировать правила //iptables// и организовать настройки ДНС. |
| |
| ===Создаем сценарий /etc/ppp/ip-up следующего содержания=== |
| |
| <code> |
| #!/bin/sh |
| |
| /usr/sbin/iptables -F |
| /usr/sbin/iptables -X |
| /usr/sbin/iptables -t nat -F |
| /usr/sbin/iptables -t nat -X |
| /usr/sbin/iptables -t mangle -F |
| /usr/sbin/iptables -t mangle -X |
| |
| /usr/sbin/iptables -P INPUT DROP |
| /usr/sbin/iptables -P FORWARD DROP |
| /usr/sbin/iptables -P OUTPUT DROP |
| |
| /usr/sbin/iptables -A INPUT -i lo -j ACCEPT |
| /usr/sbin/iptables -A INPUT -i eth0 -j ACCEPT |
| /usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT |
| /usr/sbin/iptables -A OUTPUT -o eth0 -j ACCEPT |
| |
| /usr/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT |
| /usr/sbin/iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
| /usr/sbin/iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
| /usr/sbin/iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu |
| /usr/sbin/iptables -A INPUT -m state --state INVALID -j DROP |
| /usr/sbin/iptables -A FORWARD -m state --state INVALID -j DROP |
| /usr/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP |
| /usr/sbin/iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP |
| /usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT |
| /usr/sbin/iptables -A FORWARD -i ppp0 -o eth0 -j REJECT |
| |
| /usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE |
| |
| if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then |
| rm -f /etc/ppp/resolv.prev |
| if [ -f /etc/resolv.conf ]; then |
| cp /etc/resolv.conf /etc/ppp/resolv.prev |
| grep domain /etc/ppp/resolv.prev > /etc/resolv.conf |
| grep search /etc/ppp/resolv.prev >> /etc/resolv.conf |
| cat /etc/ppp/resolv.conf >> /etc/resolv.conf |
| else |
| cp /etc/ppp/resolv.conf /etc |
| fi |
| fi |
| |
| echo "Done!" |
| </code> |
| <note tip>192.168.0.0/24 - адреса локальной сети, куда будет раздаваться интернет. ppp0 - интерфейс модема, eth0 - локальный интерфейс сервера</note> |
| |
| ===Делаем сценарий исполняемым=== |
| <code> |
| chmod 755 /etc/ppp/ip-up |
| </code> |
| На клиентских машинах: IP-адрес из сети 192.168.0.0/24, шлюз - IP-адрес сервера, где работает данная система. В качестве DNS-серверов - либо Мегафоновские (берем из /etc/resolv.conf во время поднятого ppp0) либо - от Яндекса или Гугля. |
| \\ |
| \\ |
| Автор: [[http://wiki.slackware.su/wiki:user:pilgrim| pilgrim]] |