Не могут SSH устройства внутри подсети

У меня три компьютера, настроенные так:

enter image description here

Но у меня возникают проблемы с пониманием того, как настроить /etc/network/interfaces для каждого устройства, чтобы они могли все имеют доступ к интернету.

Я попробовал это:

Load Balancer:
    Eth1 (Local)
        address 192.168.1.10
        netmask 255.255.255.0
        network 192.168.0.0
        gateway 192.168.1.254 #hub
    Eth0
        address 192.168.0.10
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255 #hub

RPi1:
    address 192.168.0.20
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.0.10 #Load Balancer Eth0
    gateway 192.168.1.10 #Load Balancer Eth1
RPi2:
    address 192.168.0.30
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.0.10 #Load Balancer Eth0
    gateway 192.168.1.10 #Load Balancer Eth1

Я проверяю, подключены ли они к Интернету, пытаясь подключиться к ним по ssh, но я могу только успешно подключиться по ssh к Load Balancer. Можете ли вы найти что-нибудь, что может вызывать проблему?

Я также пытался ssh сделать так:

ssh -t 192.168.1.10 ssh 192.168.0.20 

Но это не работает

Редактировать для Doug Smythies

Я перепробовал все, что вы предложили, и не было ошибок, но это не сработало! Я собираюсь попробовать сейчас с

EXTIF="eth1"
INTIF="eth0"

И наоборот, потому что я так думаю?

Итак, файл RPi1s /etc/network/interfaces выглядит примерно так:

auto lo etho
iface eth0 inet static

address 192.168.0.20
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.10
dns-nameservers 8.8.8.8
dns-search google.com

Но, к сожалению, я не могу редактировать это сейчас, потому что я не рядом с Пи! И я не буду в течение нескольких недель.

Я пытался пинговать 8.8.8.8 перед тем, как уйти, и он сказал что-то вроде:

192.168.1.10 сеть недоступна

Снова и снова.

Также мне нужно открыть какие-либо порты на маршрутизаторе? Я настроил переадресацию портов 8051 и 8052 на 192.168.1.10.

Да, я также отредактировал файл sshd на RPi1 для прослушивания порта 8051

edit 2

Я попробовал еще раз:

ssh -p 8051 pi@1.2.3.4

И я получите ошибку:

ssh_exchange_identification: Соединение закрыто удаленным хостом

Я чувствую, что мы приближаемся!

edit 3

Но когда я пытаюсь локально (используя teamviewer для локального компьютера) ssh вроде:

192.168.0.20:8051

Это не работает. То, что я предполагаю, является очень плохим признаком!

sudo netstat -plnt

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      644/rpcbind     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1286/nginx      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1211/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1428/cupsd      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      814/smbd        
tcp        0      0 0.0.0.0:38503           0.0.0.0:*               LISTEN      697/rpc.statd   
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      814/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      644/rpcbind     
tcp6       0      0 :::80                   :::*                    LISTEN      1286/nginx      
tcp6       0      0 :::22                   :::*                    LISTEN      1211/sshd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      1428/cupsd      
tcp6       0      0 :::445                  :::*                    LISTEN      814/smbd        
tcp6       0      0 :::54661                :::*                    LISTEN      697/rpc.statd   
tcp6       0      0 :::139                  :::*                    LISTEN      814/smbd   
3
задан 9 March 2015 в 21:36

2 ответа

От нашего обширного разговора: Ваша установка / страдал от: Проблемы с Вашим маршрутизатором, не передавая как ожидалось; Хакеры, пытающиеся к взлому через существующее, и работа, порт 22 вперед к Вашему компьютеру подсистемы балансировки нагрузки; ufw быть включенным, мешание предложенному iptables сценарию.

Метод доступа 1: Объединение в цепочку сессии SSH:

Создают ssh сессию обычным способом от Вашего внешнего компьютера до Вашего (LB) компьютер подсистемы балансировки нагрузки. Используйте ту сессию для создания новой ssh сессии между LB и RPi:

ssh pi@192.168.0.20

или, если RPi изменили его ssh порт прослушивания согласно методу 2 ниже:

ssh -p 8051 pi@192.168.0.20

Этот метод делает НЕ , дают доступ в Интернет RPI самостоятельно.

Метод доступа 2: Цепочечный порт вперед

необходимо будет сделать перенаправление портов в двух местах (маршрутизатор и затем также на подсистеме балансировки нагрузки), чтобы быть в состоянии к ssh к RPi1 и компьютерам RPi2, и это - другая история, чем может они получать доступ к Интернету или нет. Так как Вы упоминаете, что это уже работает, я предполагаю, что перенаправление портов уже является установкой на Вашем маршрутизаторе для ssh к подсистеме балансировки нагрузки. Необходимо будет использовать два различных порта для передачи, один для каждого из RPi1 и RPi2. У меня есть произвольно выбранный порт 8051 и 8052, но Ваш может изменить их.

Однако, прежде чем Вы начнете думать о большем количестве перенаправления портов, необходимо сделать его так, чтобы RPi1 и компьютеры RPi2 могли получить доступ к Интернету. Необходимо будет превратить подсистему балансировки нагрузки в маршрутизатор. Это может быть очень простой маршрутизатор, предположив, что маршрутизатор в 192.168.1.254 заботится о материале типа брандмауэра.

Фиксируют Ваши файлы интерфейсов. Предложение (Отредактированный для отражения окончательной версии):

На LB:

# The loopback network interface
auto lo eth1 eth0
iface lo inet loopback

iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8
dns-search google.com

iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255

RPi1: согласно Вашему редактированию. RPi2: То же, за исключением IP-адреса.

Первый отключают ufw, поскольку в этом случае он не добавлял значения, и он конфликтует с тем, что мы хотим сделать:

sudo ufw disable

Теперь, вот набор правила iptables для попытки (редактирование было протестировано Maximilian, хорошо работает):

#!/bin/sh
FWVER=0.01
#
# Maximilian rule set 2015.03.08 Ver:0.01
#     Port forward to RPi1 and RPi2
#     and be a NAT router for them also.
#
#     This may conflict with other stuff on the cluster computer,
#     I don't know.
#     If so, this may need to be merged somehow with whatever.
#
#     The router needs to be configured to forward ports 8051
#     and 8052 to 192.168.1.10
#     In turn, 192.168.1.10 will forward them again with this rule set.
#
#     run as sudo
#

echo "Loading Maximilian rule set version $FWVER..\n"

# The location of the iptables program
#
IPTABLES=/sbin/iptables

#Setting the EXTERNAL and INTERNAL interfaces and addresses for the network
#
EXTIF="eth1"
INTIF="eth0"
EXTIP="192.168.1.10"
INTIP="192.168.0.10"
RPI1="192.168.0.20"
RPI2="192.168.0.30"
UNIVERSE="0.0.0.0/0"

echo "  External Interface: $EXTIF  Internal Interface: $INTIF  External IP: $EXTIP  Internal IP: $INTIP  RPi1: $RPI1  RPi2: $RPI2"

#CRITICAL:  Enable IP forwarding since it is disabled by default
#
echo Enabling forwarding...
echo "1" > /proc/sys/net/ipv4/ip_forward

#Clearing any previous configuration
#
echo "  Clearing any existing rules and setting default policy to ACCEPT.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
# Delete user defined chains
$IPTABLES -X
# Reset all IPTABLES counters
$IPTABLES -Z
# While my references do not have it, I think this is needed.
$IPTABLES -t nat -Z

$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8051 -j DNAT --to-destination $RPI1:8051
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8052 -j DNAT --to-destination $RPI2:8052

#
# FORWARD rules would only be if the default policy is not ACCEPT
#

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP

echo Maximilian rule set version $FWVER done.

Проверяют выполнение ping от RPi:

ping 8.8.8.8

, Если это работает, то попытайтесь получить доступ из Интернета через ssh. Например, если внешний IP-адрес Вашего маршрутизатора 1.2.3.4:

ssh -p 8051 pi@1.2.3.4

Obvioulsy, необходимо будет установить сервер RPi1 SSH для слушания на порте 8051, и сервер RPi2 SSH для слушания на порте 8052.

, Как только Вы довольны iptables сценарием и Вы хотите, чтобы он загрузился автоматически, затем отредактировал/etc/network/interfaces и добавил пред команда (сделайте местоположение и имя файла вообще, Вы использовали):

# The loopback network interface
auto lo eth1 eth0
iface lo inet loopback
pre-up /home/maximilian/iptable

iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8
dns-search google.com

iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255

Второстепенный вопрос нападения пароля SSH:

Теперь, для Вашей проблемы хакеров, пытающихся повредить на пути нападение пароля SSH, я использую этот прием, который был чрезвычайно эффективным уже много лет. Однако обратите внимание, что другие предложат использовать различный порт и использовать ключи вместо паролей. Я делаю это этот путь, потому что мне нравится изучать нападения:

# Allow any related traffic coming back to the server in.
#
#
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT
# Secure Shell on port 22.
#
# Dynamic Badguy List. Detect and DROP Bad IPs that do password attacks on SSH.
# Once they are on the BADGUY list then DROP all packets from them.
#$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
#$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j DROP
# Sometimes make the lock time very long. Typically to try to get rid of coordinated attacks from China.
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT

, Но быть осторожным, который Вы не блокируете сами, поскольку я сделал мне когда далеко в деловых поездках. Обратите внимание, что я вношу еще одно изменение. Я редактирую sshd.conf и добавляю это:

#Limit the number of bad passwords per connection to 2. Default is 6.
#Then the iptables connection counter will kick in sooner to drop
#password attack hackers.
MaxAuthTries 2
3
ответ дан 9 March 2015 в 21:36

Акронимами

  • В точке является Маршрутизатор
  • /ПРЕДНАЗНАЧАТЬСЯ, ресурс является Rpi N
  • фунт - Подсистема балансировки нагрузки

, Чтобы быть ясен

Что касается запуска, думание, что Вы не можете соединиться с RPi снаружи, не означает, что Интернет не доступен от самого RPi. Таким образом, это - "плохая" проверка.

Вы могли соединиться легкий с RPi от LB, просто ssh в к LB, и от LB ssh к любому RPi, который Вы хотите.

Теперь о более сложных вещах

Вот две задачи:

a) обеспечивают доступ в Интернет для RPis (RPi-> INET)

фунт:

  • маршрут по умолчанию должен быть установлен через локальный IP-адрес
  • , передача должна быть включена в ядре
  • , брандмауэр должен позволить передавать

RPi:

  • , поскольку шлюз мог использоваться кластерный IP, как dns - любой dns сервер.

b) обеспечивают доступ от Интернета/маршрутизатора до RPIs (В-> RPis)

Между В, и указывает, существующий LB, поскольку результат В не будет видеть RPis непосредственно. Для решения проблемы кластерная подсеть IP должна быть направлена LB.

Поэтому, если Вы:

  • изменяют таблицу маршрутизации на маршрутизаторе (В), пример: маршрут добавляет - сетевые 192.168.0.0 сетевых маски, которые 255.255.255.0 ГВт 192.168.1.10
  • позволяют передавать пакетов на уровне ядра (LB): сеть ipv4. _ ip_forward =1
  • позволяют передавать на брандмауэре LB

    , Вы согласитесь с доступом В-> RPi. После этого Вы будете в состоянии сделать перенаправление портов к RPi от В (маршрутизаторе) непосредственно.

Все, что пути, понятые с думанием, что Ваш LB находится в середине.

Как более простой вариант, Вы могли подключить свой переключатель к маршрутизатору непосредственно и создать Вашу топологию сети в одной расположенной сети.

Подсказка:

не используют ssh в качестве тестов или netstat для порта, слушая проверка. В настоящее время у Вас есть проблемы с возможностью соединения между сетями, таким образом, traceroute, направьте команды от В-> RPi, RPi-> В, RPi->, INET даст больше информации о Вашей проблеме

0
ответ дан 9 March 2015 в 21:36

Другие вопросы по тегам:

Похожие вопросы: