Author Topic: ADSL+Linux+Router  (Read 8740 times)

0 Members and 2 Guests are viewing this topic.

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
ADSL+Linux+Router
« on: October 22, 2005, 02:20:40 »
Кто знает где ошибка?
Имеется АДСЛ модем, сервер на FC3 и сеть из трех компов. Настроил локалку - все компы видят друг-друга и видят на сервере файлы (там стоит самба). Настроил АДСЛ соединение по pppoe на сервер, т.е. если смотреть с сервера в Интернет, то все пингуется и работает, но вот из локалки компы не видят Интернет. На сервере стоят две сетевухи:
- eth0 смотрит в сторону АДСЛ - IP 192.168.1.3
- eth1 смотрит в сторону локалки - IP 192.168.2.1
- на АДСЛ модеме IP в сторону сервера 192.168.1.1, а в сторону инета 213...
- на сервере запущен маскарадинг:
- eth0 внешний
- eth1 внутренний
но почему то он не пашет, хотя по команде ifconfig выводятся все сетевые интерфейсы - eth0, eth1, lo, ppp0 адреса все там вроде правильные прописаны.

Подскажите где тут ошибка?

Offline DrDeath

  • Full Member
  • ***
  • Posts: 124
  • Karma: +1/-0
    • http://
ADSL+Linux+Router
« Reply #1 on: October 22, 2005, 02:47:28 »
"на сервере запущен маскарадинг" запущен до установления соединения по pppoe?
если склероз не изменяет, то соединение - процедура требующая времени, поэтому маскарад, если запускается перед установкой соединения, может не работать.
« Last Edit: October 22, 2005, 02:49:13 by DrDeath »

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #2 on: October 22, 2005, 03:48:18 »
Quote
"на сервере запущен маскарадинг" запущен до установления соединения по pppoe?
если склероз не изменяет, то соединение - процедура требующая времени, поэтому маскарад, если запускается перед установкой соединения, может не работать.
[snapback]4943[/snapback]

я уже по всякому пробовал :(  кстати при настройке адсл (adsl-setup) в конце настройки ставится вопрос о файрволе и три варианта:
0 - без него
1 - стандартный
2 - маскарадинг
какой вариант нужно выбирать? у меня же уже есть маскарадинг :(
в общем я запутался уже, помогайте :blink:

Offline sam

  • Full Member
  • ***
  • Posts: 239
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #3 on: October 22, 2005, 08:15:16 »
поставь на модеме режим роутер, настрой модемовский нат, так, чтобы только на 192.168.1.2 давал интернет, сделай днат на 192.168.1.2 - получишь соединение, практически аналогичное режиму Bridge
на сервере тогда делаем SNAT с клиентских компов на ип 192.168.1.2
на клиентских компах прописываем гейт 192.168.1.2
либо, если модем не умеет режим роутер, то попробуй маскарадинг заменить на SNAT на ip, получаемый провайдером 213.*.*.*
« Last Edit: October 22, 2005, 08:19:10 by sam »

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #4 on: October 22, 2005, 09:37:10 »
Quote
поставь на модеме режим роутер, настрой модемовский нат, так, чтобы только на 192.168.1.2 давал интернет, сделай днат на 192.168.1.2 - получишь соединение, практически аналогичное режиму Bridge
на сервере тогда делаем SNAT с клиентских компов на ип 192.168.1.2
на клиентских компах прописываем гейт 192.168.1.2
либо, если модем не умеет режим роутер, то попробуй маскарадинг заменить на SNAT на ip, получаемый провайдером 213.*.*.*
[snapback]4946[/snapback]

я конечно понимаю, что решений подобной ситуации много, но хотелось бы узнать, что же все таки у меня за ошибка, может чего не доделал?

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #5 on: October 22, 2005, 21:28:50 »
Quote
поставь на модеме режим роутер, настрой модемовский нат, так, чтобы только на 192.168.1.2 давал интернет, сделай днат на 192.168.1.2 - получишь соединение, практически аналогичное режиму Bridge
на сервере тогда делаем SNAT с клиентских компов на ип 192.168.1.2
на клиентских компах прописываем гейт 192.168.1.2
либо, если модем не умеет режим роутер, то попробуй маскарадинг заменить на SNAT на ip, получаемый провайдером 213.*.*.*
[snapback]4946[/snapback]

в общем все сделал как ты сказал, но:
 - конечно все работает как я и предполагал
 - мой сервак не виден из инета, а видна страница модема
 - мне нужен бридж, ну или что то типа соединения на прямую на мой сервер (конечно посредством АДСЛ)
народ ну подскажите что нить, парюсь уже долго просто

Offline sam

  • Full Member
  • ***
  • Posts: 239
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #6 on: October 22, 2005, 22:19:55 »
Quote
- мне нужен бридж, ну или что то типа соединения на прямую на мой сервер (конечно посредством АДСЛ)
народ ну подскажите что нить, парюсь уже долго просто
[snapback]4956[/snapback]
попробуй сделать не маскарадинг, а SNAT на внешний ип, сказал же,
или пускай маскарадинг с через полминуты после инициализации установки pppoe-сессии(либо, не знаю, можно так сделать или нет, т.к. с pptp дел не имел, чтобы pptp уходило в демон не сразу, а только когда установится соединение с провайдером, тогда просто ставишь маскарадинг после pptp)
Quote
- мой сервак не виден из инета, а видна страница модема
[snapback]4956[/snapback]
это ты днат не настроил

Offline wzd

  • Newbie
  • *
  • Posts: 20
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #7 on: October 23, 2005, 00:27:14 »
маскарадинг не нужен, поскольку он полезен в том случае, когда IP присваниваеся по DHCP все время разный.
у томсктелекома на АДСЛ присваиваетяс фиксированный IP, поэтому исползовать нужно SNAT.
Вот как настриивал я


1.   Настраиваем сетевые интерфейсы:

192.168.1.2   Eth0 Подключение к модему (сам модем по умолчанию имеет адрес 192.168.1.1)
192.168.0.1   Eth1 Локальная Сеть

2.   Настраиваем модем в режим bridge (подробно об этом можно почитать на сайте adsl.tomsk.ru). Для настройки можно использовать telnet или web-интрейфес. Если не получается подключиться нужно проверить настройки брандмауэра (посмотреть действующие правила можно командой iptables-save)
3.   Настраиваем подключение в Интернет (интерфейс ppp0), для чего в консоли даем команду adsl-setup и отвечаем на все вопросы.
4.   Активируем ppp0 (adsl-start или ifup ppp0).
5.   Тестим работает или нет. (ping www.tomsknet.ru)
6.   Настраиваем iptables
7.   squid и прочие нужные вещи по надобности
« Last Edit: October 23, 2005, 00:49:42 by wzd »

Offline wzd

  • Newbie
  • *
  • Posts: 20
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #8 on: October 23, 2005, 00:34:22 »
Далее
1.   Берем готовый скрипт  rc.firewall. помещаем его в папку /etc/rc.d/
2.   В файле rc.firewall подставляем свои IP адреса
3.   Для выполнения этого скрипта во время загрузки нужно сделать на него ссылку в файле /etc/rc.d/rc.local
Вот текст rc.firewall


echo "Setting up firewall......"
INET_IP="217.x.x.x"  - здесь пописать внешний айпишник.
INET_BROADCAST="217.x.x.255"
INET_IFACE="ppp0"
LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/24"
LAN_IFACE="eth1"
MODEM_IP="192.168.1.1"
LAN2_IP="192.168.1.2"
LAN2_IFACE="eth0"
LAN2_IP_RANGE="192.168.1.1/2"
LO_IFACE="lo"
LO_IP="127.0.0.1"
IPTABLES="iptables"
#####################################################
# 2. Module loading.
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
# 2.2 Non-Required modules
#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

#####################################################
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

###########################################################################
#
# 4. rules set up.

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -F
$IPTABLES -N bad_tcp_packets


$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -N tomsk_net
$IPTABLES -N tomsk_net_ftp
$IPTABLES -N allowed_mail_ip

#
# 4.1.3 Create content in userspecified chains
#
# ##################################
# IP с которых можно забирать почту
$IPTABLES -A allowed_mail_ip -s y.y.y.y -j allowed
$IPTABLES -A allowed_mail_ip -s y.y.y.y -j allowed
$IPTABLES -A allowed_mail_ip -j DROP
##################################
# bad_tcp_packets chain

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
#$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
#--log-prefix "New not syn:"
#$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#
# allowed chain
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# TCP rules
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j tomsk_net_ftp
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed_mail_ip

# for passive mode ftp
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 40000:45000 -j allowed

#
# UDP ports
#

#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT

#
# In Microsoft Networks you will be swamped by broadcasts. These lines
# will prevent them from showing up in the logs.
#

#$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \
#--destination-port 135:139 -j DROP

#
# If we get DHCP requests from the Outside of our network, our logs will
# be swamped as well. This rule will block them from getting logged.
#

#$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \
#--destination-port 67:68 -j DROP

#
# ICMP rules
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#####################################################
# Define space of tomsk networks

#/etc/rc.d/rc.tomsknet
/etc/rc.d/perl.tomsknet
/etc/rc.d/perl.ftp_allow
########################################################################

# Bad TCP packets we don't want.

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# Rules for special networks not part of the Internet
#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN2_IFACE -s $LAN2_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN2_IP -j ACCEPT

#
# Special rule for DHCP requests from LAN, which are not caught properly
# otherwise.
#

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

#
# Rules for incoming packets from the internet.
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

#
# If you have a Microsoft Network on the outside of your firewall, you may
# also get flooded by Multicasts. We drop them so we do not get flooded by
# logs
#

#$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP

#
# Log weird packets that don't match the above.
#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "

#
# 4.1.5 FORWARD chain
#
echo Seting up FORWARD chain...

#
# Bad TCP packets we don't want
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#
# Accept the packets we actually want to forward
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j tomsk_net
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Log weird packets that don't match the above.
#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "

#
# 4.1.6 OUTPUT chain
#
echo Seting up OUTPUT chain...
#
# Bad TCP packets we don't want.
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Special OUTPUT rules to decide which IP's to allow.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN2_IP -j ACCEPT
#
# Log weird packets that don't match the above.
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

######
# 4.2 nat table
# Enable simple IP Forwarding and Network Address Translation
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
« Last Edit: October 23, 2005, 00:50:51 by wzd »

Offline wzd

  • Newbie
  • *
  • Posts: 20
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #9 on: October 23, 2005, 00:45:04 »
Это скрипт  пропускает пакеты из локальной сетки в только в томские сети.
Шариться в внешке можно только через прокси.
К этому скрипту прилагается файлы для генерации списка томских сетей. Если нужны будут пиши.
Если тебе не надо ограничивать рабочие станции только томским нетом, то
замени строчку
$IPTABLES -A FORWARD -i $LAN_IFACE -j tomsk_net
на
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #10 on: October 23, 2005, 01:37:01 »
Вот щас чайку попью и буду снова крутить, всем большое спасибо за внимание, ежели будут вопросы напишу :D

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
ADSL+Linux+Router
« Reply #11 on: October 23, 2005, 12:22:03 »
Quote
Далее
1.   Берем готовый скрипт  rc.firewall. помещаем его в папку /etc/rc.d/
2.   В файле rc.firewall подставляем свои IP адреса
3.   Для выполнения этого скрипта во время загрузки нужно сделать на него ссылку в файле /etc/rc.d/rc.local
Вот текст rc.firewall

[Покусано ...]
[snapback]4964[/snapback]
Только ИМХО лучше не запихивать его в rc.d, а переработать эти правила и записать в /etc/sysconfig/iptables, а модули необходимые подгрузить в /etc/sysconfig/iptables_config

Хотя это конечно IMHO
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline wzd

  • Newbie
  • *
  • Posts: 20
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #12 on: October 23, 2005, 17:38:36 »
В этом скрипте есть такие строчки
/etc/rc.d/perl.tomsknet
/etc/rc.d/perl.ftp_allow


их невозможно запихнуть /etc/sysconfig/iptables, поскольку он сожержит только правила для Iptables

Кстати заодно вот текст скрипта на перле который разрешает SNAT только по томским сетям
Еще есть примерно такой же для ftp.


#!/usr/bin/perl -w

########################################################################
# Define space of tomsk networks,


print "Setting ACCEPT to NETWORK SPACE of TOMSK... (masquerade or SNAT)\n";
system ("iptables -F  tomsk_net");
open F1,"< /etc/rc.d/tomsknetworks" or die "Can't open database!!!";


@lines=<F1>;

#$size=$#lines+1;
foreach $line(@lines)
{
    $r1=index($line," ",0);
    $r2=index($line," ",$r1+1);
    $r3=index($line," ",$r2+1);
    $network=substr($line,$r1+1,$r2-$r1-1);
    $preflen=substr($line,$r2+1,$r3-$r2-1);    
    $net= $network."/".$preflen;
    $cmd="iptables -A tomsk_net -d ".$net." -j ACCEPT";
    system $cmd;
}


close(F1);



Offline wzd

  • Newbie
  • *
  • Posts: 20
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #13 on: October 23, 2005, 18:07:11 »
де еще совсем забыл..
если у тебя локальный днс сервер не настроен, то на каждой рабочей станции ты должен прописать томсктелекомовские днс сервера 217.18.138.30 и 217.18.130.30,  (ну или назначать их локальным dhcp сервером) и 192.168.0.1 в качестве шлюза по умолчаню. Иначе работать тоже ничего не будет ж)

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #14 on: July 08, 2007, 03:50:25 »
Люди подскажите где я туплю?

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3306 -j DROP

Как я понимаю не должно пускать на этот порт такой строчкой?
А все равно проходит...

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
ADSL+Linux+Router
« Reply #15 on: July 08, 2007, 04:06:52 »
Quote from: Vtec
Люди подскажите где я туплю?

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3306 -j DROP

Как я понимаю не должно пускать на этот порт такой строчкой?
А все равно проходит...
переход на эту (tcp_packets) цепочку не порушен?
т.е. вот эта строка:
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
сохранилась и действует?

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #16 on: July 08, 2007, 12:25:54 »
Да присутствует.
Именно такая и есть...

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
ADSL+Linux+Router
« Reply #17 on: July 08, 2007, 23:15:07 »
Quote from: Vtec
Да присутствует.
Именно такая и есть...
И речь идет именно об интерфейсе $INET_IFACE и ни о каком другом?!
Давай конкретно, как проверял, как настраивал?
Я бы, конечно, поинересовался бы выдачей "iptables -L -n", но полагаю это будет слишком большой листинг, так что давай приближаться...

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
ADSL+Linux+Router
« Reply #18 on: July 10, 2007, 16:27:29 »
Ну в общем мне нужно чтобы с $INET_IFACE не были доступны порты 22, 3306. Есть ещё локальный. В общем конфиг почти идентичен выше написанному, только там ещё ppp присутствует, а у меня нет его.
Листинг выдать могу но, попозже.

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
ADSL+Linux+Router
« Reply #19 on: July 11, 2007, 00:29:00 »
Quote from: Vtec
Ну в общем мне нужно чтобы с $INET_IFACE не были доступны порты 22, 3306. Есть ещё локальный. В общем конфиг почти идентичен выше написанному, только там ещё ppp присутствует, а у меня нет его.
Листинг выдать могу но, попозже.
полагаю, вы единственный, кому это нужно.
размещая сообщение в форуме и расчитывая на помощь, потрудитесь дать всю необходимую информацию, задаваемые вам вопросы - не праздное любопытство, а добровольные попытки помочь вам. Научитесь это уважать.
Как уже неоднократно указывалось, здесь не клуб телепатов...
Если вам нужна помощь именно типа "У меня что-то не работает, разберитесь пожалуйста, я - чайник!" готовьте пиво, либо его валютный эквивалент и зазывайте в гости!