Домашний Роутер-NAS-DC на базе Oranege Pi Plus. Часть 6. Доступ в интернет при помощи PPPoE. Фаервол IPTables.

www

PPPoE

Простейший способ настроить PPPoE соединение это установить утилиту pppoeconf.

apt-get install pppoeconf

Внимание! Теперь вам необходимо отключить Orange Pi от роутера, и поставить плату на его место, сделав так чтобы Orange Pi стал вашим роутером. В моем случае это воткнуть в Ethernet-гнездо Orange Pi кабель от провайдера и соединить компьютер с USB-to-Ethernet адаптером Orange Pi.
После этого к Orange Pi необходимо будет подключаться по новому адресу, заданному у интерфейса br0 в предыдущей части. В моём случае это 192.169.100.1

Если подключение по новому адресу прошло успешно, можно начать конфигурировать доступ в интернет. Запустим pppoeconf

pppoeconf

1) В диалоге POPULAR OPTIONS отвечаем Yes
2) В диалоге ENTER USERNAME необходимо указать свой логин выданный провайдером для доступа в интернет.
3) В диалоге ENTER PASSWORD необходимо указать свой пароль выданный провайдером для доступа в интернет.
4) В диалоге USE PEER DNS отвечаем No, т.к. в файле resolv.conf в качестве DNS прописан наш локальный адрес и нам не нужно его менять.
5) В диалоге LIMITED MSS PROBLEM отвечаем Yes чтобы включить mss clamping, упомянутый во второй части.
6) В диалоге DONE отвечаем Yes, чтобы соединение автоматически поднималось при старте системы.
7) В диалоге ESTABLISH A CONNECTION отвечаем Yes, чтобы немедленно поднять соединение.

Готово. Чтобы проверить доступ в интернет. Скачайте какую-нибудь страничку на Orange Pi при помощи wget или пинганите что-нибудь.

IPTables

Соединение с интернетом установлено, но им пока может пользоваться только сам Orange Pi, да еще и со всеми открытыми в интернет портами.
Для того чтобы обезопасить своё соединение с интернетом и позволить устройствам в локальной сети его использовать необходимо грамотно настроить iptables.
Для этого создадим срипт, содержащий правила iptables, например /home/root/iptables.sh, со следующим содержимым:

#!/bin/sh
IPT="iptables"
# Интерфейс который смотрит в интернет
WAN_IFACE=ppp0
# Интерфейс локальной сеть
LAN_IFACE=br0
# Адрес локалки
LAN=192.169.100.1/24


# Удаление всех правил из таблиц
$IPT -t filter -F
$IPT -t nat -F
$IPT -t raw -F
$IPT -t mangle -F
#Удаление всех пользовательских цепочек из таблиц
$IPT -t filter -X
$IPT -t nat -X
$IPT -t raw -X
$IPT -t mangle -X

# В качестве политики по умолчанию - отброс всех пакетов.
# Иными словами, если пакет из указанных таблиц не затронуло ни одно из нижеперечисленных правил, к нему будет применено действие DROP.
$IPT -P INPUT DROP
$IPT -P FORWARD DROP

# Разрешим устройствам из внешки пинговать роутер
$IPT -A INPUT -i $WAN_IFACE -p icmp --icmp-type echo-request -j ACCEPT
# Также разрешим доступ из внешки к роутеру, но разрешим её только пакетам в установленных(ESTABLISHED) и дочерних(RELATED) соединениях.
# Иными словами, пробрасываются только те пакеты, инициаторами соединений которых выступили мы сами. Пакеты соединений со статусом NEW(статус установки соединения) и другими статусами отбрасываются.
$IPT -A INPUT -i $WAN_IFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# остальные запросы из внешки - накуй
$IPT -A INPUT -i $WAN_IFACE -j REJECT

# Разрешим обращение к роутеру от локального интерфейса(localhost) и от устройств из локальной сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN_IFACE -j ACCEPT

#Разрешим доступ с интерфейса eth0 на случай, если понадобится опять подключаться через него
$IPT -A INPUT -i eth0 -j ACCEPT

#Разрешить устройствам в сети общаться между собой
$IPT -A FORWARD -i $LAN_IFACE -o $LAN_IFACE -j ACCEPT

# Ниже три правила для обеспечения доступа устройств из локалки в интернет и обратно.
# Разрешим устройствам из локалки обрашаться во внешку
$IPT -A FORWARD -s $LAN -o $WAN_IFACE -j ACCEPT
# Разрешим и обратную связь - из внешки к устройствам в локалке, по аналогии с похожим правилом в цепочке INPUT.
$IPT -A FORWARD -d $LAN -m conntrack --ctstate ESTABLISHED,RELATED -i $WAN_IFACE -j ACCEPT
# Для всех пакетов из локальной сети во внешку делаем Маскарадинг - подмену адреса источника пакета внешним адресом роутера.
$IPT -t nat -A POSTROUTING -s $LAN -o $WAN_IFACE -j MASQUERADE

# Также для доступа устройств из локалки в интернет потребуется включить проброс пакетов.
echo '1' > /proc/sys/net/ipv4/ip_forward

# Вклюим MTU clamping. Это правило было внесено в таблицу mangle утилитой pppoeconf - оставляем как есть.
$IPT -A FORWARD -t mangle -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu

exit 0

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

Но прежде чем использовать этот скрипт, добавим права на его выполнение:

chmod +x /home/root/iptables.sh

Исполнив этот скрипт, вы можете проверить наличие интернета на сетевых устройствах. Также вы можете протестировать доступ извне при помощи онлайн сканеров – доступ будет только для пинга.

Для того, чтобы правила загружались при старте сети создаем файл /etc/network/if-pre-up.d/firewall со следующим содержимым:

#!/bin/sh
/home/root/iptables.sh

Также разрешим выполнение этого файла:

chmod +x /etc/network/if-pre-up.d/firewall

Готово. После перезагрузки Orange Pi будет автоматически раздавать интернет локальным устройствам и будет защищен.
Осталось настроить raid и nfs.

Leave a Reply

Your email address will not be published. Required fields are marked *