LinuxForum.Fans
Тема

Интернет шлюз. Сервер не видит сеть.

Автор: tw1ns 15 сообщений 5798 просмотров
#305202

Здравствуйте. Столкнулся с такой проблемой:
На сервере настроен интернет шлюз, который раздает в локальную сеть. Доступ к интернету по eth0, локалка eth1 на роутер. Интернет в локальную сеть при данной настройке раздается, но сам сервер без доступа в интернет. Никак не могу понять где копать...
Привожу данные:

/etc/network/interfaces

Показать
[console]root@Test:/home/test1# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# eth0
auto eth0
iface eth0 inet static
address 94.137.229.178
netmask 255.255.255.224
gateway 94.137.229.161

# eth1 смотрит в вашу домашнюю локалку
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
[/console]

ifconfig

Показать
[console]
root@Test:/home/test1# ifconfig
eth0 Link encap:Ethernet HWaddr 64:70:02:04:91:dd
inet addr:94.137.229.178 Bcast:94.137.229.191 Mask:255.255.255.224
inet6 addr: fe80::6670:2ff:fe04:91dd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39276 errors:0 dropped:0 overruns:0 frame:0
TX packets:21712 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36993936 (35.2 MiB) TX bytes:2257520 (2.1 MiB)
Interrupt:19 Base address:0xec00

eth1 Link encap:Ethernet HWaddr 48:5b:39:c4:e9:7c
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::4a5b:39ff:fec4:e97c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21031 errors:0 dropped:0 overruns:0 frame:0
TX packets:38061 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2194738 (2.0 MiB) TX bytes:36899254 (35.1 MiB)
Interrupt:27 Base address:0xc000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:237 errors:0 dropped:0 overruns:0 frame:0
TX packets:237 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:36085 (35.2 KiB) TX bytes:36085 (35.2 KiB)
[/console]
#305213

у тебя два шлюза в LAN и WAN? по мне кажется шлюз должен быть только на интерфейсе, который смотрит в public (wan)? И еще уточнения, что используются в качестве прокси-сервера? squid?

#305223

Насчет шлюза - это просто я забыл удалить из eth1...там его нет. Прокси-сервер не используется. В iptables прописано только

text
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#305231
"tw1ns" написал:
асчет шлюза - это просто я забыл удалить из eth1...там его нет. Прокси-сервер не используется. В iptables прописано только

iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

это ты влючил нат. но этого недостаточно. надо разрешить ответы из внешней сети (wan) в локалку и обратно из локалки в наружу. надо такую команду вбить.
Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

и еще такую надо разрешить из сети наружу, чтобы пакеты ходили.
Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

еще разреши ходить пакетам на на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

попробуй сделай. и пропингуй например гугл днс. 8.8.8.8 с сервера. думаю должно помочь, потому что однозначно надо в iptables разрешить ответы из вне и обратно, а судя по всему у тебя этого нет.

#305234

Спасибо за ответ- но не заработало =) хотя днс гугла пингуется...

Route -n

Показать
[console]
root@Test:/home/test# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
94.137.229.160 0.0.0.0 255.255.255.224 U 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 94.137.229.161 0.0.0.0 UG 0 0 0 eth0
[/console]

#305235

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

#305240

Iptables -l -n -v

Показать
[console]
root@Test:/home/test# iptables -L -n -v
Chain INPUT (policy ACCEPT 378 packets, 37826 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
608 132K ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0
624 107K ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 323 packets, 37437 bytes)
pkts bytes target prot opt in out source destination

[/console]
сам собственно

Показать
[console]
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# включаем nat:
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT


# Эту строчку удалять нельзя:
exit 0
[/console]

Итог тот же- на сервере нет интернета, на раздаче -есть...не понимаю...
Железок нет- у сервера одна сетевая поднимает интернет, вторая раздаёт. Больше ничего нет. Интернет раздаётся- на самом сервере его нет.

#305250

кажется нашел ошибку в таблице маршрутизации route -n. глянь адрес ты написал 160. а надо 161. а еще у тебя нет сети в /etc/network/interfaces для etho

#305254

Интерфейсы выложил в первом посте. Откуда взялся 160- реально понять не могу- нигде эту цифру не забивал. Проверил ша ещё раз- стоит 160. Как изменить её? и где?)

#305317

94.137.229.160 - это шлюз провайдера, судя по route -n и вашему ip.
Статью - читали?

#305338

Ох...почитал Ваши статьи- сделал всё по http://linuxforum.ru/viewtopic.php?pid=176106#p176106. Привожу всё, что есть сейчас- проблема осталась та же.

ip r

Показать
[console]
root@Test:/home/test# ip r
94.137.229.160/27 dev eth0 proto kernel scope link src 94.137.229.178
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.1
default via 94.137.229.161 dev eth0
[/console]
route -n

Показать
[console]
root@Test:/home/test# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
94.137.229.160 0.0.0.0 255.255.255.224 U 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 94.137.229.161 0.0.0.0 UG 0 0 0 eth0
[/console]
ifconfig

Показать
[console]
root@Test:/home/test# ifconfig
eth0 Link encap:Ethernet HWaddr 64:70:02:04:91:dd
inet addr:94.137.229.178 Bcast:94.137.229.191 Mask:255.255.255.224
inet6 addr: fe80::6670:2ff:fe04:91dd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1551 errors:0 dropped:0 overruns:0 frame:0
TX packets:1498 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:335710 (327.8 KiB) TX bytes:213688 (208.6 KiB)
Interrupt:19 Base address:0xec00

eth1 Link encap:Ethernet HWaddr 48:5b:39:c4:e9:7c
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::4a5b:39ff:fec4:e97c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1306 errors:0 dropped:0 overruns:0 frame:0
TX packets:934 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:166356 (162.4 KiB) TX bytes:224971 (219.6 KiB)
Interrupt:27 Base address:0xc000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:178 errors:0 dropped:0 overruns:0 frame:0
TX packets:178 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:27405 (26.7 KiB) TX bytes:27405 (26.7 KiB)
[/console]
rc.local

Показать
[console]
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sh /home/test/firewall.sh
# Эту строчку удалять нельзя:
exit 0
[/console]
/home/test/firewall.sh

Показать
[console]
#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1
export LAN_IP_RANGE=192.168.10.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE
# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 49152:65535 -j ACCEPT

# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT

# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 80 -j ACCEPT

# Открытие портов для игровых серверов
$IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
$IPT -A INPUT -i $WAN -p tcp --dport 9987 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 9987 -j ACCEPT
# **********************************************************************

# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat
[/console]

/etc/network/interfaces

Показать
[console]
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# eth0
auto eth0
iface eth0 inet static
address 94.137.229.178
netmask 255.255.255.224
gateway 94.137.229.161

# eth1 смотрит в вашу домашнюю локалку
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
[/console]
Всё айпишники забиты верно.

#305342

Сервер без доступа в Инет?

Пинги с сервака до шлюза идут: ping 94.137.229.161?
Пинги с сервака до ДНС серваков идут: ping 8.8.8.8?
ДНС работает: ping ya.ru?

#305349

Всем спасибо- все извините. Просто поспешил- надо было нормально вчитываться. Поднял заного все интерфейсы, заного настроил iptables - всё сразу заработало. Ещё раз всем спасибо.

#305358

ну, вот. поздравляю! да читать надо внимательно.

#305440
"tw1ns" написал:
Всем спасибо- все извините. Просто поспешил- надо было нормально вчитываться. Поднял заного все интерфейсы, заного настроил iptables - всё сразу заработало. Ещё раз всем спасибо.

Радует что мануал ещё в ходу, приму во внимание критику, если есть, только пожалуйста тут, чтобы не затерялось...

Войдите или зарегистрируйтесь, чтобы ответить.