воскресенье, 22 июня 2008 г.

Организация доступа к ЛВС через модемное соединение

Методика была отработана на ASPLinux 9.2, RHELAS 3 и SUSE 9.3 с модемами ZyXEL OMNI 56k+ и ZyXEL U336.
Адрес сервера в ЛВС 172.18.29.11, адрес клиента 172.18.29.20.
Нужно установить пакеты ppp и mgetty.

===/etc/ppp/options.ttyS0===
lock
login
auth
modem
crtscts
refuse-chap
require-pap
mtu 576
mru 576
proxyarp
172.18.29.11:172.18.29.20
======

===/etc/ppp/pap-secrets===
# Secrets for authentication using PAP
# client server secret IP addresses
* * "" 172.18.29.20
======


(добавить строки)
===/etc/mgetty+sendfax/login.config===
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
======


(добавить строки)
===/etc/mgetty+sendfax/mgetty.config===
port ttyS0
data-only y
init-chat "" ATZ OK AT&FM0E1Q0S0=1 OK
answer-chat "" ATA CONNECT \c \r
======


(добавить строки)
===/etc/inittab===
S0:2345:respawn:/sbin/mgetty -s 57600 -x3 -n 2 ttyS0
======


Скрипт для разрешения форвардинга пакетов от IP_CLIENT на IP_SERVER. Это нужно, например, для того, чтобы удаленный клиент смог воспользоваться услугами Интернет, которые раздает шлюз с адресом IP_SERVER. Если просто включить форвардинг, то удаленный клиент будет чувствовать себя частью ЛВС со всеми вытекающими отсюда последствиями.
===/etc/init.d/router===
#!/bin/sh

IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe

IP_CLIENT=172.18.29.20
IP_LO=127.0.0.1
IP_HOST=172.18.29.11
IP_SERVER=172.18.29.1


forward_set()
{
echo $1> /proc/sys/net/ipv4/ip_forward
}

rule_clear()
{
forward_set "0"
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
}

rule_set()
{
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_mangle
$MODPROBE iptable_nat
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state
forward_set "1"
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -A FORWARD -s $IP_CLIENT -d ! $IP_SERVER -j REJECT
$IPTABLES -P OUTPUT ACCEPT
}

case "$1" in
start)
rule_set
;;
stop)
rule_clear
;;
*)
echo "Usage: route {start|stop}"
exit 1
esac
exit 0
======


Вот, собственно, и все.

Комментариев нет: