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

Следующие пакеты необходимо будет собрать самостоятельно, я делал это на отдельной машине:

wvstreams wvdial

Устанавливаем все в следующей последовательности:

  1. l/*
  2. a/usb_modeswitch
  3. n/iptables
  4. n/ppp
  5. wvstreams
  6. 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!"
192.168.0.0/24 - адреса локальной сети, куда будет раздаваться интернет. ppp0 - интерфейс модема, eth0 - локальный интерфейс сервера

Делаем сценарий исполняемым

chmod 755 /etc/ppp/ip-up

На клиентских машинах: IP-адрес из сети 192.168.0.0/24, шлюз - IP-адрес сервера, где работает данная система. В качестве DNS-серверов - либо Мегафоновские (берем из /etc/resolv.conf во время поднятого ppp0) либо - от Яндекса или Гугля.

Автор: pilgrim

Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:3g141 (generated for current page)