
Здравствуйте, уважаемые суперпользователи!
Вот топология моей локальной сети. WAN-модем-маршрутизатор-брандмауэр-Pi маршрутизатор-брандмауэр-локальные машины.
Я использую тестовую машину в локальной сети: bob.
Я не могу получить доступ к интернет-сайтам Боба, получаю сообщение «хост назначения недоступен».
Вот мои маршруты:
маршруты на бобе (анонимно):
по умолчанию черезpi-маршрутизатор-iface-внутренний-lan-eth0dev eth0 источникбоб-ипметрика 202
внутренняя локальная сеть/24 dev eth0 proto dhcp область ссылка источникбоб-ипметрика 202
lan-beyond-pi-router (модем + pi-iface-eth1)/24 черезpi-маршрутизатор-внутренний-lan-iface-eth0dev eth0
маршруты на роутере pi:
по умолчанию черезpi-маршрутизатор-внутренний-iface-eth0dev eth0 источникpi-маршрутизатор-внутренний-iface-eth0метрика 202
по умолчанию черезpi-маршрутизатор-внешний-iface-eth1dev eth1 источникpi-маршрутизатор-внешний-iface-eth1метрика 203
внутренняя локальная сеть/24 dev eth0 proto dhcp область ссылка источникpi-маршрутизатор-внутренний-iface-eth0метрика 202
lan-beyond-pi-маршрутизатор/24 dev eth1 proto dhcp scope link srcpi-маршрутизатор-внешний-iface-eth1метрика 203
Я использую ufw для фильтров и nat. Это моя собственная идея, не совсем в ней уверен: поскольку я не могу настроить via route на модеме, я включил NAT на "внешнем" (eth1) интерфейсе маршрутизатора Pi (интерфейс на стороне модема). Вот моя конфигурация ufw:
'#
'# правил.перед
'#
'# Правила, которые должны быть запущены до добавления правил в командную строку ufw. Пользовательские
'# правил следует добавить в одну из этих цепочек:
'# ufw-before-input
'# ufw-before-output
'# ufw-before-forward
'#
'# nat Правила таблицы
*нат
:ПОСТРАСПИСАНИЕ ПРИНЯТО - [0:0]
'# Перенаправить трафик с eth0 на eth1
-A POSTROUTING -s 10.0.0.0/24 -o eth1 -j МАСКАРАД
'#личное дополнение, не уверен в этом
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j МАСКАРАД
'# не удаляйте строку 'COMMIT', иначе эти правила таблицы NAT не будут обработаны
СОВЕРШИТЬ
'# Не удаляйте эти обязательные строки, иначе будут ошибки
*фильтр
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-не-локальный - [0:0]
'# Конец требуемых строк
'# разрешить все на обратной петле
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
'# быстро обрабатываем пакеты, для которых у нас уже есть соединение
-A ufw-before-input -m conntrack --ctstate СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ
-A ufw-before-output -m conntrack --ctstate СВЯЗАННЫЕ,УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ
-A ufw-before-forward -m conntrack --ctstate СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ
'# отбрасывать НЕДОПУСТИМЫЕ пакеты (регистрировать их на уровне журнала средний и выше)
-A ufw-before-input -m conntrack --ctstate НЕВЕРНО -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate НЕВЕРНЫЙ -j ОТКАЗ
'# ok icmp коды для INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type время-превышено -j ПРИНЯТЬ
-A ufw-before-input -p icmp --icmp-type проблема-параметра -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
'# ok icmp code for FORWARD -A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type время-превышено -j ПРИНЯТЬ
-A ufw-before-forward -p icmp --icmp-type проблема-параметра -j ПРИНЯТЬ
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT
'# разрешить работу DHCP-клиента
-A ufw-before-input -p udp --sport 67 --dport 68 -j ПРИНЯТЬ
'#
'# ufw-не-локальный
'#
-A ufw-before-input -j ufw-not-local
'# если ЛОКАЛЬНЫЙ, ВОЗВРАТ
-A ufw-not-local -m addrtype --dst-type ЛОКАЛЬНЫЙ -j ВОЗВРАТ
'# если МУЛЬТИКАСТ, ВОЗВРАТ
-A ufw-not-local -m addrtype --dst-type МНОГОАДРЕСНАЯ РАССЫЛКА -j ВОЗВРАТ
'# если ТРАНСЛЯЦИЯ, ВОЗВРАТ
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
'# все остальные нелокальные пакеты отбрасываются
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
'# разрешить MULTICAST mDNS для обнаружения служб (убедитесь, что строка MULTICAST выше
'# не прокомментирован) -A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT
'# разрешить MULTICAST UPnP для обнаружения служб (убедитесь, что строка MULTICAST выше
'# не прокомментирован)
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ПРИНЯТЬ
СОВЕРШИТЬ
Теперь я могу пинговать модем с Боба, но не могу нормально зайти в интернет. Хотя DNS интернета работает.
Когда я пытаюсь подключиться к WAN-серверу, я получаю: "хост назначения недоступен". Думаю, у меня где-то проблема в конфигурации или чего-то не хватает.
Может быть, мне следует настроить что-то на модеме, сейчас я этого не делаю. Но нет, когда я проводил тесты, я подключил маршрутизатор Pi к коммутатору с обоими интерфейсами на одном коммутаторе, в какой-то момент я смог получить доступ к сети, все работало. После этих тестов я подключил Pi к его конечному месту, рядом с модемом. Теперь, от machine bob до WAN, маршрут проходит через коммутатор, два CPL, маршрутизатор pi, модем.
Большое спасибо за ваши идеи :-)
/cr!?ptal
решение1
Я добавил новый маршрут на pi-router и он работает!
sudo ip добавить маршрут по умолчанию черезмодем-маршрутизатор-ip/24 устройство eth1.
и:
судо су
отключить ufw && включить ufw
Более того, чтобы сделать этот пользовательский маршрут постоянным, я добавил его в /etc/dhcpcd.exit-hook.
Миссия выполнена :-)