Содержание
3G в SlackWare 14.1 при помощи vwdial |
---|
В одной из прошлых статей я описывал минимальную конфигурацию SlackWare 14.1 для работы в качестве серверной системы. Сегодня изложу свой опыт настройки 3G интернета от Мегафон с передачей его в локальную сеть. И, как правило, нам будет необходим автозапуск всего этого дела.
Установка зависимостей
Для функционирования системы нам понадобятся следующие пакеты из дистрибутива SlackWare 14.1 и зависимости к ним:
a/usb_modeswitch l/libnl3 l/libpcap l/libusb l/libusb-compat n/iptables n/ppp
Следующие пакеты необходимо будет собрать самостоятельно, я делал это на отдельной машине:
Устанавливаем все в следующей последовательности:
- l/*
- a/usb_modeswitch
- n/iptables
- n/ppp
- wvstreams
- wvdial
Настройка системы
Запуск wvdial
Конфигурация wvdial
[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
Сценарий запуска /etc/rc.d/rc.wvdial
#! /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
Делаем сценарий исполняемым
chmod 755 /etc/rc.d/rc.wvdial
Прописываем скрипт в автозапуск. Для этого в /etc/rc.d/rc.inet2 добавляем строки
if [ -x /etc/rc.d/rc.wvdial ]; then . /etc/rc.d/rc.wvdial start fi
Включение маршрутизации
Включаем проброс пакетов между интерфейсами
сhmod 775 /etc/rc.d/rc.ip_forward
Настройка ppp
Задача: после поднятия интерфейса ppp0 (мегафоновское подключение) активировать правила iptables и организовать настройки ДНС.
Создаем сценарий /etc/ppp/ip-up следующего содержания
#!/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!"
Делаем сценарий исполняемым
chmod 755 /etc/ppp/ip-up
На клиентских машинах: IP-адрес из сети 192.168.0.0/24, шлюз - IP-адрес сервера, где работает данная система. В качестве DNS-серверов - либо Мегафоновские (берем из /etc/resolv.conf во время поднятого ppp0) либо - от Яндекса или Гугля.
Автор: pilgrim