LINUX.ORG.RU
ФорумAdmin

Проблемы с элементарным шлюзом


0

1

Здравствуйте профессионалы, помогите пожайлуста новичку в Linux системах.

Конфигурация системы следующая. В Virtual Box есть две виртуальные машины
одну я хотел использовать в качестве шлюза Centos 2.6.18 - 8.1.6.e15 с двумя сетевыми интерфейсами eth0(внешний) и eth1(внутренний). Вторая машинка рабочая станция WinXPSP3 c одним внутренним сетевым интерфейсом.
Сетевые параметры:
На Centos    файл /etc/sysconfig/network-scripts/ifcfg-eth0:
       
      DEVICE=eth0
      BROADCAST=192.168.1.255
      HWADDR=08:00:27:26:4E:A5
      IPADDR=192.168.1.30
      NETMASK=255.255.255.0
      NETWORK=192.168.1.0
      GATEWAY=192.168.1.2
      ONBOOT=yes
      
      файл /etc/sysconfig/network-scripts/ifcfg-eth1:
      
      DEVICE=eth1
      BROADCAST=192.168.10.255
      HWADDR=08:00:27:BB:7C:82
      IPADDR=192.168.10.1
      NETMASK=255.255.255.0
      NETWORK=192.168.10.0
      GATEWAY=192.168.1.30
      ONBOOT=yes

На XP сетевые настройки TCP/IP:
      IP-адрес   192.168.10.2
      Маска подсети   255.255.255.0   
      Основной шлюз   192.168.10.1

На Centos:

В файле    /etc/sysctl.conf выставляю следующий параметр в 1
      
      net.ipv4.ip_forward = 1
            
ввожу следующие команды:

      iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      service iptables save
      service iptables restart

в /etc/sysconfig/network

      FORWARD_IPV4=YES

Перезапускаю сетевую подсистему
      
      service network restart

И тут мне выдаётся
      
      Shutting down interface eth0: [ OK ]
      Shutting down interface eth1: [ OK ]
      Shutting down loopback interface: [ OK ]
Disabling IPv4 packet forwarding: net.ipv4.ip_forward = 0
[ OK ]
      Bringing up loopback interface: [ OK ]
      Bringing up interface eth0: [ OK ]
      Bringing up interface eth1: [ OK ]

В четвёртой строчке мне выдаётся что форвардинг не работает и тот параметр который я на первом шаге ставил в 1 обнуляется для системы и делает невозможным работу шлюза. Хотя после этого всего

      cat /proc/sys/net/ipv4/ip_forward выдаёт 1
      Мистика какая-то !!!

Проверяю маршрутизацию netstat -r выдаёт следующее

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.10.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default pc001 0.0.0.0 UG 0 0 0 eth0

Тоже странно внутрення сеть 192.168.10.0 без явного шлюза хотя вроде как прописал

Вообщем помогите разобраться. Заранее спасибо !!!

> Тоже странно внутрення сеть 192.168.10.0 без явного шлюза

Ей не нужен «шлюз», она доступна напрямую - то есть как direct.

Nastishka ★★★★★
()

И еще, вы бы определились со схемой маршрутизации?

У вас, как понимаю, «наружным» интерфейсом выступает eth0? Тогда опцию GATEWAY из ifcfg-eth1 уберите. Эта опция отвечает за маршрут по умолчанию, и на eth1 ей делать нечего.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Здравствуйте, спасибо за то что ответили !!!
Да «наружным» интерфейсом выступает eth0. Опцию GATEWAY из ifcfg-eth1 убрал. Перегрузил service network restart. Всё равно Disabling IPv4 packet forwarding: net.ipv4.ip_forward = 0, что очень мистично. Что тут посоветуете?
А схема маршрутизации самая тривиальная eth0 «наружный» интерфейс, eth1 - внутренний. Но так как машинки то виртуальные соответственно есть ещё и самый «внешний» интерфейс GATEWAY=192.168.1.2 - мастер хост. Но он на Centos работает исправно
ping ya.ru
PING ya.ru (93.158.134.3) 56(84) bytes of data.
64 bytes from ya.ru (93.158.134.3): icmp_seq=1 ttl=57 time=11.4 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=3 ttl=57 time=13.9 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=4 ttl=57 time=10.3 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=5 ttl=57 time=8.95 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=6 ttl=57 time=11.0 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=7 ttl=57 time=9.93 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=8 ttl=57 time=9.41 ms
64 bytes from ya.ru (93.158.134.3): icmp_seq=10 ttl=57 time=10.6 ms


belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

Всё равно Disabling IPv4 packet forwarding: net.ipv4.ip_forward = 0, что очень мистично. Что тут посоветуете?

Что тут посоветовать? Изучить bash и посмотреть содержимое /etc/init.d/network. Там будет видно, что restart это последовательное выполнение «service network stop» и «service network start». Когда делается stop, то и происходит выключение forward и т.д. А когда делается start, то просто обрабатывается файл /etc/sysctl.conf без вывода сообщений, какие настройки там есть.

mky ★★★★★
()
Ответ на: комментарий от mky

В документации написано, что опция FORWARD_IPV4 более «неживая», и вместо нее рекомендуют (приказывают :-)) править /etc/sysctl.conf, так что все попытки использовать эту переменную ни к чему не приведут.

А проблемы с сетевой работой в гостевой Win, как мне кажется, связаны с файрволом, так что iptables -L -n -v в студию, и будем посмотреть.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Две звезды, значит знаете, что у форума древовидная структура. Зачем понадобилась моя iptables?

Просите iptables и топикстартера. Заодно, пусть покажет, что винда может пинговать 192.168.10.1, может тут проблемы виртуалки.

mky ★★★★★
()
Ответ на: комментарий от Nastishka

[root@Centos6001 ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
143 15975 RH-Firewall-1-INPUT all  — * * 0.0.0.0/0 0. 0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RH-Firewall-1-INPUT all  — * * 0.0.0.0/0 0. 0.0.0/0

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

Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
8 560 ACCEPT all  — lo * 0.0.0.0/0 0.0.0.0/0
3 252 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah  — * * 0.0.0.0/0 0.0.0.0/0
32 6302 ACCEPT udp  — * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp  — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
65 5634 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
1 52 ACCEPT tcp  — * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
34 3175 REJECT all  — * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
[root@Centos6001 ~]#

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

>так что проблема где то в CentOSe

Там нет проблем, он в точности делает то, что ему указано :) Сами же показали правила iptables, там нет разрешения на FORWARD пактов.

mky ★★★★★
()
Ответ на: комментарий от Tok

Ввел следующие команды
iptables -I FORWARD -j ACCEPT
service iptables save [ok]
service iptables restart [ok]
service network restart [ok]

[root@Centos6001 network-scripts]# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
33 1804 RH-Firewall-1-INPUT all  — * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0
0 0 RH-Firewall-1-INPUT all  — * * 0.0.0.0/0 0.0.0.0/0

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

Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all  — lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah  — * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp  — * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp  — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp  — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
33 1804 ACCEPT all  — * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp  — * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 0 REJECT all  — * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
[root@Centos6001 network-scripts]#

В Винде инет не пашет

belartvlad80
() автор топика
Ответ на: комментарий от Nastishka

DNS request timed out.
timeout was 2 seconds.
***Can't find server name for address 192.168.10.1: Timed out
***Default servers are not available
Default Server: UnKnown
Address: 192.168.10.1

belartvlad80
() автор топика

> cat /proc/sys/net/ipv4/ip_forward выдаёт 1

Вот это - главное. Значит, форвардинг включен. Не люблю разбираться с чужими правилами iptables, так что рекомендую начать вот с такого:

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

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

И смотреть, что получится. Без всяких save/restart.

AS ★★★★★
()
Ответ на: комментарий от belartvlad80

> Все команды выполнил

Инет на винде не работает


Конфигурация, тем не менее, правильная. Значит какие-то грабли в настройках виртуальных машин. tcpdump хоть какой-то трафик показывает на интерфейсах ?

AS ★★★★★
()
Ответ на: комментарий от belartvlad80

tcpdump
...
13:46:06.894806 IP 192.168.1.30.ssh > pc001.ccs-software: P 16498388:16498536(148) ack 76649 win 727
13:46:06.895555 IP pc001.ccs-software > 192.168.1.30.ssh: . ack 16499672 win 14600
13:46:06.895702 IP 192.168.1.30.ssh > pc001.ccs-software: P 16499672:16500156(484) ack 76649 win 727
13:46:07.042675 IP pc001.ccs-software > 192.168.1.30.ssh: P 76649:76701(52) ack 16500156 win 14116
13:46:07.042972 IP 192.168.1.30.ssh > pc001.ccs-software: P 16500156:16500384(228) ack 76701 win 727
13:46:07.043679 IP 192.168.1.30.ssh > pc001.ccs-software: P 16500384:16500628(244) ack 76701 win 727
...
128950 packets captured
257906 packets received by filter
5 packets dropped by kernel

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

> Что вы скажите на то, что на Винде не проходит команда nslookup?

То, что что-то где-то не так.

Может на Centose установить DNS сервер?


Не в этом дело.

tcpdump

...


13:46:06.894806 IP 192.168.1.30.ssh > pc001.ccs-software: P 16498388:16498536(148) ack 76649 win 727



Блин. Не вообще трафик, а на том интерфейсе, который в сторону Windows-виртуалки смотрит.

AS ★★★★★
()
Ответ на: комментарий от AS

А какую команду надо ввести?
Внутренний сетевой интерфейс eth1 ...

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

Начните с простого, с винды «ping 93.158.134.3» и «tracert -d 93.158.134.3». Если ping работает, смотрите как в винде настроен DNS, если нет, запускайте tcpdump на интерфейсе eth1 в режиме перехвата icmp «tcpdump -n -nn -i eth1 icmp» и запускайте пинг с винды. Потом посмотрите tcpdump на интерфейсе eth0.

mky ★★★★★
()
Ответ на: комментарий от mky

Ping 192.168.10.1 (eth1 на Centos) с Винды идёт на ура !!!
tracert -d 192.168.10.1 тоже на ура!!!
А вот ping Centos6001 (hostname) не проходит, значит что то в DNS ...
Как на винде настроить DNS?
Мне тут посоветовали не ставить DNS-сервер на Centos, вроде как не обязательно ...

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

> Как на винде настроить DNS?

Мне тут посоветовали не ставить DNS-сервер на Centos, вроде как не обязательно ...


Настройка DNS - это следующий этап. Сначала надо добиться, чтобы TCP/IP заработал. А, потом, можно за остальное браться, в том числе и за DNS. Не надо всё в одну кучу мешать. Интерфейс на ЦентОС, как я понял, пингается. А пингается ли что-то за этим хостом ? Если пингается, то TCP/IP можно считать работающим и, очевидно, iptables, если пингается что-нибудь с реальным ip.

AS ★★★★★
()
Ответ на: комментарий от AS

Я понял, вот что я сделал
Запинговал с Винды ip-адрес 87.250.250.203 (ya.ru) пинг прошёл без потерь на ура !!!
В IE в адресе набрал http://87.250.250.203/ с задержкой но страница загрузилась !!!
Набрал в адресе http://ya.ru/ не грузиться и всё тут, явно в DNS проблема ...
Что посоветуете?

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

Вобще, вам на винфак, тут всё таки форум про Линукс.

А так, надо прописать правильный DNS-сервер в свойствах сетевого интерфейса на винде. Можно тот же DNS-сервер, что и в файле /etc/resolv.conf на CentOS.

mky ★★★★★
()
Ответ на: комментарий от mky

Ну наконец-то получилось!!!
Огромное спасибо всем кто мне помогал разобраться в проблеме !!!
Действительно надо было прописать адрес мастер хоста в DNS поле сетевого интерфейса винды

belartvlad80
() автор топика
Ответ на: комментарий от belartvlad80

Ай, какая я умница, два раза правильные вопросы задала :-)

Nastishka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.