Contents
-
Setting up an Ubuntu Wired/Wireless Router
- Preface
- Scripted wired:wired router
-
Network Manager
-
Typical Example
- Quick and Dirty
-
Typical Example
- Technical Overview
-
Prerequisites
- Internet Connection
-
Router Hardware
- Use your desktop PC
- Dedicated Hardware
- Terminology
- Internal Network Information
-
Setting Up Your Network Interfaces
- Device Naming Overview
- Taking a Backup
-
Configuring the External Network Interface
-
Setting up External Network Interface
- For Dynamic IP Addresses (DHCP) Only
- For PPPoE connection with dynamic IP address only
- For Static IP Address Only
- Testing Connectivity
-
Setting up External Network Interface
-
Configuring the Internal Network Interfaces
- Wired Only
- Wireless Only
- Both Wired and Wireless
- Enable IP forwarding and Masquerading
- Firewall
- DHCP and DNS
1. Setting up an Ubuntu Wired/Wireless Router
1.1. Preface
This article is intended for intermediate and advanced users who would like to set up an Ubuntu installation acting as a router at home or in their office. The end result is a powerful router that can provide functionality similar to popular products (for example, the Linksys WRT54G).
1.2. Scripted wired:wired router
I (user id Snake_Byte) created a python script a while back that sets up a wired router for you given some basic info (check the readme).
Tested on Karmic and Lucid, let me know if you have any problems. I want to start a GUI project to make this simpler, and incorporate wireless features if anyone is interested, we can get a repo going.
[Note added: The script included in this page at the link below assumes different addresses than on the rest of the page and MUST BE EDITED to replace the assumed IP address and range for your private network, and to remover the examples, before use. Furthermore, for recent versions of Debian and Ubuntu, the assumed dhcp3-server must be replaced by a more modern server, such as isc-dhcp-server, and all references to dhcp3 and dhcp3 should be replaced by just dhcp once you do so. Thus you should LOOK OVER ALL OF THE CONTENTS of the directory tree after unpacking the tar file — so not just blindly execute it before doing so.]
You can get it here:
ubuntu router.tar
1.3. Network Manager
This tool is perfect for simple networking problems, especially for laptop users. It is not appropriate for setting up a router, even though it does have a very basic internet connection sharing capability.
1.3.1. Typical Example
Home Office
The basis is one PC connected to a broadband internet connection. Additional devices:
- network printer
- wifi PDA
- laptop
Some of these devices should be able to communicate with each other, some should be allowed to communicate with the internet. Some are wired, and some are wireless. With this guide, your PC can share the internet over additional network interfaces, such as wireless cards and ethernet cards.
University
Single PC on a university LAN. Additional devices:
- X-Box running mythbuntu
- Wifi mobile phone
- laptops
1.3.1.1. Quick and Dirty
If you would like to try to do the same thing the ‘quick and dirty’ way, see EasyRouter, a much quicker method with much less flexibility.
1.4. Technical Overview
The router that will be created is an Internet gateway for wired and/or wireless clients to share an internet connection with one IP address.
The essential components are:
-
routing of packets from your local networks to the internet, with IP_masquerading
- handling DNS requests
- providing IP addresses to devices on your local networks (DHCP)
This router can also provide:
- A firewall
- port forwarding
2. Prerequisites
2.1. Internet Connection
This is not strictly necessary, but is probably the reason you are following this article. You can set up a router in an isolated network using these instructions, but you will likely have specialist requirements, and need to make changes.
2.2. Router Hardware
2.2.1. Use your desktop PC
If you have a recent PC, bought in the last two years, it probably has enough horsepower to run all your normal applications and act as a router at the same time.
2.2.2. Dedicated Hardware
You’ll need a dedicated computer to act as the router. The computer can use old hardware and having the minimum requirements to install Ubuntu should suffice. The author of this article runs his router on a P3 600mhz processor with 256MB of RAM. You are encouraged use this as a server for other applications perhaps by installing postfix, apache, mysql, and/or samba. This guide recommends a server installation of Ubuntu, but there’s no reason why a desktop installation wouldn’t work. If you plan to be able to access the router remotely, install ssh before proceeding.
The following needs to be physically installed and recognized by the kernel on your router:
- A network adapter
-
For a wired network,
- Another network adapter, typically an ethernet port on a motherboard, or PCI card.
-
For a wireless network,
- A wireless network adapter
-
Ideally it should be able run in «master» mode, although «ad-hoc» mode might be good enough. Cards and chipsets which can work in master mode (otherwise known as access point or ap mode), are listed at the Linux Wireless Project.
-
sudo ip link set dev <interface name> down && sudo iwconfig <interface name> mode master should not return an error; but some cards take extra commands to set master mode. mac80211 compatible drivers can run cards in master mode. Pay careful attention to what hardware you buy.
-
If your wireless network adapter is not recognized by your server installation of Ubuntu, it may use the madwifi chipset (like the D-Link DWL-G520). Please visit Router/Madwifi for more information.
-
- A wireless network adapter
Running ip addr will show you what network interfaces are available.
2.2.3. Terminology
interface is used to mean the operating system’s name for a place which sends or receives data packets. It is often, but not necessarily, the same as a device. An interface may have several devices associated (e.g. a bridge), or a single device may have several interfaces. device will refer here to the bit of hardware dealing with your network connections.
3. Internal Network Information
Here are the values we’ll use to set up your internal network. Advanced users use caution when changing them as the changes will need to be reflected in all further router configuration.
Firstly, discover the IP address of your internet-connected interface. If you are plugged into a business or academic LAN, this is very likely to be given by:
ip addr show eth0
For a home broadband user, it may be a ppp interface; and a wireless user could have any number of interface names, such as ethX, wlanX, athX, where X is a digit.
Be aware that it is important to use different numbers below to the one given to your internet device. This is probably the case already, but if you are not directly connected to the internet, you may be on a LAN with the same address range. If you already have a broadband router, for example, it might have given you the 192.168.0.2 address, and kept 192.168.0.1 for itself. If so, change the third digit (0) to another number (and do so throughout the rest of this tutorial).
Router |
|
Address |
192.168.0.1 |
Network |
192.168.0.0/24 |
Broadcast |
192.168.0.255 |
Clients |
|
Addresses |
192.168.0.2 — 192.168.0.254 |
Prefix length |
/24 |
Broadcast |
192.168.0.255 |
Gateway |
192.168.0.1 |
4. Setting Up Your Network Interfaces
4.1. Device Naming Overview
Network Device |
Internal or External Network |
Description |
eth0 |
External |
Network adapter connected to an external network (your broadband connection) |
eth1 |
Internal |
Network adapter connected to a hub or switch |
wlan0 |
Internal |
Wireless network adapter |
br0 |
Internal |
Network bridge between eth1 and wlan0 that will treat the two like one device |
It is important to note that the names of the network interfaces above (eth0, eth1, and wlan0) are used as convention. It is very likely that your router will recognize its devices under different names (for example, madwifi calls its wireless device ath0). Please substitute the names of your device accordingly. For information about how to change the names of your network devices, try man iftab.
4.2. Taking a Backup
Issue the following command to take a backup of your current network configuration:
-
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
4.3. Configuring the External Network Interface
4.3.1. Setting up External Network Interface
Here, we configure the Ubuntu networking system to bring the the local loopback and external network interfaces up by editing /etc/networking/interfaces. The primary goal here is to set up your external network interface (eth0, or whatever you’re using in place of it) to be brought up by the networking subsystem. The examples below are only for the most basic setups. If your setup requires additional configuration, for example you need to setup ADSL with PPPoE, adapt the following examples so that the end result is your external network interface connected to the Internet.
4.3.1.1. For Dynamic IP Addresses (DHCP) Only
Open /etc/network/interfaces with your favourite editor. Delete everything and paste in what is below. Follow the commented out instructions carefully.
-
# Set up the local loopback interface auto lo iface lo inet loopback # Set up the external interface # # Don't forget to change eth0 to the proper name of the external # interface if applicable. # auto eth0 iface eth0 inet dhcp
4.3.1.2. For PPPoE connection with dynamic IP address only
See forum.
4.3.1.3. For Static IP Address Only
Open /etc/network/interfaces with your favourite editor. Delete everything and paste in what is below. Follow the commented out instructions carefully.
-
# Set up the local loopback interface auto lo iface lo inet loopback # Set up the External interface # # For every xxx.xxx.xxx.xxx, enter the numeric address given to you # by your Internet provider. Don't forget to change eth0 to the proper # name of the external interface if applicable. # auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx
Now, set up your DNS servers as given to you by your service provider in /etc/resolv.conf, which should look something like this
-
nameserver xxx.xxx.xxx.xxx nameserver xxx.xxx.xxx.xxx
You can visit the Ubuntu Server Guide — Network Configuration documentation for more information
4.3.2. Testing Connectivity
Reload the network configuration and test for connectivity,
-
sudo /etc/init.d/networking restart ping -c 3 -W 10 ubuntu.com
And if all goes well something similar should return:
-
PING ubuntu.com (82.211.81.166) 56(84) bytes of data. 64 bytes from signey.ubuntu.com (82.211.81.166): icmp_seq=1 ttl=43 time=99.9 ms 64 bytes from signey.ubuntu.com (82.211.81.166): icmp_seq=2 ttl=43 time=109 ms 64 bytes from signey.ubuntu.com (82.211.81.166): icmp_seq=3 ttl=43 time=100 ms --- ubuntu.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 99.982/103.450/109.419/4.254 ms
4.4. Configuring the Internal Network Interfaces
4.4.1. Wired Only
Append the following to /etc/network/interfaces and follow the commented out instructions carefully.
-
# Set up the internal wired network # # Don't forget to change eth1 to the proper name of the internal # wired network interface if applicable. # auto eth1 iface eth1 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255
Your internal network interface is: eth1 (or whatever you’re using in place of it)
4.4.2. Wireless Only
If you plan on using WEP, generate a network key,
-
dd if=/dev/random bs=1 count=13 2>/dev/null | xxd -p
Append the following to /etc/network/interfaces and follow the commented out instructions carefully.
-
# Set up the internal wireless network # # Don't forget to change wlan0 to the proper name of the internal # wireless network interface if applicable. # # If you would like to use WEP, uncomment the line 'wireless-key' # and replace '<key goes here>' with a WEP key. # # You may also change the network essid and channel. # auto wlan0 iface wlan0 inet static wireless-mode master wireless-essid "UbuntuWireless" wireless-channel 1 #wireless-key <key goes here> address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255
Your internal network interface is: wlan0 (or whatever you’re using in place of it)
4.4.3. Both Wired and Wireless
First install the necessary tools to create a network bridge,
-
sudo apt-get install bridge-utils
If you plan on using WEP, generate a network key,
-
dd if=/dev/random bs=1 count=13 2>/dev/null | xxd -p
Append the following to /etc/network/interfaces and follow the commented out instructions carefully.
-
# Set up the internal wireless network # # Don't forget to change wlan0 to the proper name of the internal # wireless network interface if applicable. # # If you would like to use WEP, uncomment the line 'wireless-key' # and replace '<key goes here>' with a WEP key. # # You may also change the network essid and channel. # auto wlan0 iface wlan0 inet manual wireless-mode master wireless-essid "UbuntuWireless" wireless-channel 1 #wireless-key <key goes here> # Set up the internal wired network # # It's not necessary to bring this interface up as the bridge # we are about to create does this. Leave these lines commented. # #auto eth1 #iface eth1 inet manual # Set up the internal wired/wireless network bridge # # Don't forget to change wlan0 and eth1 to the proper name of # the internal wired and wireless interfaces if applicable. # auto br0 iface br0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 bridge-ports eth1 wlan0
Your internal network interface is: br0
4.5. Enable IP forwarding and Masquerading
Doing the above might not be enough to make the Ubuntu machine a real router which does NAT (Network Address Translation) and IP Forwarding. The following script configures the Kernel IPTable and IP forwarding. You will have to configure at least the script’s 2 variables; the 1st is the external network interface; the 2nd is the internal network interface.
-
EXTIF="eth0" INTIF="eth1"
The script was originally from a Ubuntu router guide forum article which has 2 internal network interfaces. What’s showing below uses only 1 internal network interface. You will have to modify the script manually or use the script in the Ubuntu router guide forum article if you need to configure 2 internal network interfaces.
-
echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n" DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe EXTIF="eth0" INTIF="eth1" #INTIF2="eth0" echo " External Interface: $EXTIF" echo " Internal Interface: $INTIF" #====================================================================== #== No editing beyond this line is required for initial MASQ testing == echo -en " loading modules: " echo " - Verifying that all kernel modules are ok" $DEPMOD -a echo "----------------------------------------------------------------------" echo -en "ip_tables, " $MODPROBE ip_tables echo -en "nf_conntrack, " $MODPROBE nf_conntrack echo -en "nf_conntrack_ftp, " $MODPROBE nf_conntrack_ftp echo -en "nf_conntrack_irc, " $MODPROBE nf_conntrack_irc echo -en "iptable_nat, " $MODPROBE iptable_nat echo -en "nf_nat_ftp, " $MODPROBE nf_nat_ftp echo "----------------------------------------------------------------------" echo -e " Done loading modules.\n" echo " Enabling forwarding.." echo "1" > /proc/sys/net/ipv4/ip_forward echo " Enabling DynamicAddr.." echo "1" > /proc/sys/net/ipv4/ip_dynaddr echo " Clearing any existing rules and setting default policy.." iptables-restore <<-EOF *nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT -A FORWARD -j LOG COMMIT EOF echo -e "\nrc.firewall-iptables v$FWVER done.\n"
After configuring the 2 variables, save the script below as nat.sh and make it executable by doing
-
chmod a+x nat.sh
Now, test the script by running as root
-
sudo sh nat.sh
Investigate the messages from the console output to see if any error happened. If everything looks fine, use another host in the internal network to test if it can access the external network (presumably the Internet). A quick way to test is pinging Google public DNS from the console.
-
ping -c 3 -W 10 8.8.8.8
If ping responds, make our new script bootable so we don’t have to run the script every time we restart.
-
sudo cp nat.sh /etc/init.d/ sudo ln -s /etc/init.d/nat.sh /etc/rc2.d/S95masquradescript
As a final test, restart your computer and test to see if you still have the same functionality. If so then congratulations! If not then make sure you followed the above correctly so the script is bootable.
5. Firewall
See Router/Firewall
6. DHCP and DNS
Dynamic Host Configuration Protocol (DHCP)
CategoryNetworking
Время на прочтение
12 мин
Количество просмотров 62K
И снова здравствуйте!
В первой части статьи я рассказывал о «железной» составляющей будущего роутера. Поскольку без софта даже самое расчудесное железо, естественно, работать не будет, следовательно требовалось снабдить аппарат соответствующей программной «начинкой».
Когда я затевал всё это движение, я предполагал, что будет непросто. Но не предполагал, что настолько. В одном из комментариев к предыдущей части статьи я клятвенно пообещал рассказать о нижеследующем «к выходным». Благоразумно умолчал к каким именно. Тут ещё умудрился прихворнуть не вовремя, но всё-таки сдерживаю своё обещание.
Итак…
Напомню комплектацию:
- материнская плата Intel D2500CC с комплектным двухядерным 64-bit процессором Intel Atom D2500, двумя гигабитными сетевыми интерфейсами
- оперативная память SO-DIMM DDR-3 1066 4Gb Corsair
- SSD-накопитель Crucial M500 120 GB
- сетевая карта 1000 Mbit D-Link DGE-528T
- mini-PCI-E Wi-Fi карта Intel 7260.HMWWB 802.11 a/b/g/n/ac + Bluetooth 4.0
- всё это хозяйство упаковано в корпус Morex T-3460 60W
Первым делом я определил для себя круг задач, которые будет выполнять маршрутизатор, чтобы в дальнейшем мне было проще его админить.
Ещё раз уточню, что эти ваши интернеты приходят ко мне по 100 Мбитному каналу (тариф, естественно, даёт несколько меньшую скорость, но не суть). Получилось, собственно, вот что:
- Доступ в интернет со всех устройств, имеющихся дома в распоряжении +n устройств, появляющихся эпизодически или вообще однократно
- Домашняя локалка
- Соответственно, маршрутизация трафика из/в интернет/локальная сеть
- Файлохранилище (доступ по FTP или Samba)
- Торрентокачалка
- ed2k-сеть (ибо очень круто развита у провайдера)
- web-сервер
В перспективе:
- домен
- видеонаблюдение
- элементы «умного дома»
чёрт в ступемного чего интересного
Естественным в этой ситуации было выбирать из *nix-based систем. Некоторое время пришлось потратить на изучение матчасти, рыская по сети. В итоге я проделал следующий путь…
1. FreeBSD 10.1-RELEASE
Очень хотелось реализовать всё на фряхе. Плюсы её в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами очевидны, неоспоримы и многократно воспеты гуру.
Поскольку ранее дел я с фряхой близко не имел, пришлось круто раскурить Руководство по FreeBSD, сопровождая процесс чтения параллельным процессом установки на устройство последнего стабильного релиза 10.1.
Небольшое отступление
К слову, установку фряхи (да и всех описываемых далее систем) я производил при помощи замечательного устройства Zalman ZM-VE300 с терабайтным HDD внутри; сие устройство имеет на борту эмулятор оптического привода, что позволяет накидать на жёсткий диск в папку _iso образы, после чего, установив в BIOS загрузку с Zalman Virtual CD, производить загрузку и установку с этих самых образов, всё равно что, если бы они были записаны на болванку и вставлены в физический привод.
Всё было замечательно, система встала, но меня ждал неприятный сюрприз, о котором я, откровенно говоря, знал, но решил-таки проверить на практике: FreeBSD напроч отказывалась видеть Wi-Fi карточку. Вернее видеть-то она её видела, но только адрес и название вендора, а что это и с чем её едят, фряха понимать не желала (драйвер устройства значился как none1). Кроме того, дальнейшее чтение мануала выявило, что в режиме точки доступа во FreeBSD работают только Wi-Fi карты на основе набора микросхем Prism. Печальбеда… Да, нашёл я также и информацию, что моя карточка в настоящий момент вообще не имеет драйвера под фряху. Даже портированного.
10. Debian 7.7.0
Расстраивался я недолго: не состоялась фряха — возьму старый добрый Debian. Установил с netinstall-образа базовую систему без графического окружения. Долго пытался понять, что не так. Стабильный релиз Debian в данный момент 7.7.0, имеет ядро версии 3.2. В этом ядре опять же нет поддержки моей многострадальной Wi-Fi сетевушки. Полез на ЛОР искать ответ, в итоге получил неутешительные выводы: надо ставить ядро посвежее (в случае Debian — тот ещё геморрой), пляски с
бубном
ядрами, по мнению гуру, не труъ Debian-way (так прямо и сказали: хочешь перекомпилять ядра — выбери другой дистрибутив).
11. Ubuntu Server 14.04 LTS
Плюнув на попытки круто
провести время
покрасноглазить, я взял знакомый и уважаемый мной дистрибутив. Уже более года он (правда версии 12.04 LTS) вертится у меня на сервере, раздающем плюшки в сети провайдера.
Из плюсов: стабильность, простота установки, настройки и администрирования, куча документации.
Из минусов: необходимость дорабатывать напильником, поскольку «искаропки» получается толстоват и несколько неповоротлив.
Установка
По сути не представляет ничего сложного и аналогична таковой в Debian. Производится в диалоговом режиме text-mode. Описывать детально не вижу смысла, т.к. всё это уже десятки раз пережёвано и валяется на множестве ресурсов (начиная с официальных сайтов на разных языках и заканчивая местечковыми форумами).
Важным моментом является правильная разметка и подготовка SSD. Всем прекрасно известно, что твердотельные накопители построены на технологии flash-памяти и имеют ограниченный ресурс на запись. Справедливости ради отмечу, что на просторах всемирной паутины глаголят о достаточной надёжности современных твердотельников (сравнимой с классическими жёсткими дисками). Тем не менее было бы глупо плевать на элементарные рекомендации в отношении эксплуатации SSD.
Перед началом любых манипуляций с накопителем рекомендуется обновить прошивку, но на моём оказалась самая свежая, поэтому данный шаг я пропустил.
Первой необходимой манипуляцией при разметке накопителя является выравнивание разделов диска. Если кратко, то каждый раздел должен начинаться с сектора кратного 8. Первый раздел рекомендовано начинать с 2048 сектора (это связано с расположением в начале накопителя MBR или GPT, а «отступ» в 1 Мб берётся с запасом.
При разметке я создал 3 раздела:
- boot — ext2
- root — ext4
- home — ext4
$ sudo fdisk -l
Диск /dev/sda: 120.0 Гб, 120034123776 байт
255 головок, 63 секторов/треков, 14593 цилиндров, всего 234441648 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 4096 байт
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Идентификатор диска: 0x000ea779
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 42993663 20971520 83 Linux
/dev/sda3 42993664 234440703 95723520 83 Linux
Как видно, все разделы начинаются с секторов, кратных 8. Таким образом доступ будет осуществляться с обращением по правильному сектору, что поможет сберечь нежный ресурс накопителя.
Далее в опциях монтирования разделов в /etc/fstab следует добавить discard — для включения TRIM и noatime — для отключения записи в метаданные времени последнего доступа к файлу.
Очередное отступление
С noatime не всё так однозначно. Например, в десктопных системах браузеры отслеживают «свежесть» своего кэша именно по времени последнего доступа, таким образом, включение данной опции влечёт за собой не уменьшение записи на диск, а наоборот — увеличение, поскольку браузер видит, что его кэш «протух» и начинает подтягивать новый. В этом случае рекомендуется использовать опцию relatime — атрибут времени доступа (atime) обновляется, но только в том случае, если изменились данные файла (атрибут mtime) или его статус (атрибут ctime). Для серверной системы это, пожалуй, не столь критично, но всё же я включил noatime для boot, а для root и home — relatime.
Все остальные советы, нагугленные на просторах сети, как то увеличение времени между сбросами буферов на диск (опция commit=[time, sec.]), отключение «шлагбаума» (опция barrier=0) и прочее не внушили мне доверия в плане приобретаемой полезности в ущерб сохранности данных и безопасности.
Кроме того, я не стал выделять отдельный раздел для swap, решив, что оперативной памяти мне должно хватить для поставленных задач. Если же всё-таки возникнет необходимость в подкачке, ничто не мешает сделать swap в виде файла и смонтировать его как раздел.
Также было принято волевое решение вынести временные файлы (/tmp) в tmpfs.
В процессе установки задаются общие параметры, как то: локаль, параметры времени/геопозиции, имя системы, а также создаётся новый юзер и пароль к нему. Далее следует выбор устанавливаемого программного обеспечения, в котором я пометил для установки следующее:
- OpenSSH server
- DNS server
- LAMP server
- Print server
- Samba file server
После загрузки в свежеустановленную систему проявилась одна крайне неприятная особенность (кстати, в Debian было то же самое): после инициализации драйверов вырубалось видео, монитор переходил в режим ожидания, и становилось непонятно система зависла или просто что-то не так с выводом. Обнаружилось, что доступ по ssh есть, и можно было бы на этом остановиться, но всегда может возникнуть ситуация, когда необходимо получить физический доступ к маршрутизатору (например, шаловливые ручонки админа поковырялись в настройках сети, и доступ через консоль категорически пропал %) ). Посёрфиф по форумам я наткнулся на решение (оказывается баг известен и проявляется именно на этой материнской плате):
add to /etc/modprobe.d/blacklist.conf:
blacklist gma500_gfxrun
sudo update-initramfs -u
sudo reboot
Пруф.
В случае с Debian — /etc/modprobe.d/fbdev-blacklist.conf.
После перезагрузки всё заработало.
Настройка сети
В процессе установки системы я выбрал в качестве сетевого интерфейса, который будет использован для установки, карту D-Link. Она уменя была подключена патчкордом к одному из LAN моего старого маршрутизатора (это было сделано для того, чтобы иметь доступ по SSH до настройки сетевых интерфейсов, а поскольку на Асусе также запущен DHCP-сервер, проблем с подключением не возникло), тестировать при таком подключении доступ в интернет не составит никаких проблем.
Также в свежей системе проявился ещё один глюк:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
Проблема связана с библиотекой авторизации libpam-smbpass, можно просто её снести, а можно поступить более изящно:
$ sudo pam-auth-update
снять пометку с SMB password synchronization, что отключает синхронизацию паролей системных пользователей и пользователей Samba.
Устанавливаем все доступные обновления:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
И приступаем к настройке сетевых интерфейсов. В маршрутизаторе 4 физических интерфейса и loopback:
Вывод терминала
$ ifconfig -a
em0 Link encap:Ethernet HWaddr 00:22:4d:ad:69:f0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17 Память:d0220000-d0240000
eth0 Link encap:Ethernet HWaddr d8:fe:e3:a7:d5:26
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:741 errors:0 dropped:0 overruns:0 frame:0
TX packets:477 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:482523 (482.5 KB) TX bytes:45268 (45.2 KB)
eth1 Link encap:Ethernet HWaddr 00:22:4d:ad:69:ec
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:16 Память:d0320000-d0340000
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1784 (1.7 KB) TX bytes:1784 (1.7 KB)
wlan0 Link encap:Ethernet HWaddr 80:19:34:1e:fe:83
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
- eth0 — «смотрит» в интернет, получает настройки по DHCP
- eth1 и em0 — интегрированные в материнку сетевые адаптеры
- wlan0 — как нетрудно догадаться, беспроводной интерфейс Wi-Fi
Устанавливаем hostapd и переводим беспроводной интерфейс в режим Master:
$ sudo iwconfig wlan0 mode Master
К моему величайшему сожалению такой способ не сработал, и команда вывалилась с ошибкой, поэтому я прибегнул к альтернативному способу:
$ sudo apt-get install iw
$ sudo iw dev wlan0 del
$ sudo iw phy phy0 interface add wlan0 type __ap
После чего:
$ iwconfig
wlan0 IEEE 802.11abgn Mode:Master Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
Теперь необходимо сконфигурировать все сетевые интерфейсы, чтобы было удобнее с ними работать. Я решил объединить встроенные сетевушки и Wi-Fi в мост, чтобы управлять этим хозяйством как единым целым при раздаче IP-адресов по DHCP, маршрутизации и пр. Приводим к следующему виду /etc/network/interfaces:
/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
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto wlan0 br0
# The wireless interface
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type __ap
# The bridge
iface br0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
bridge_ports em0 eth1 wlan0
Перезагружаемся. Теперь видим:
Вывод терминала
$ ifconfig -a
br0 Link encap:Ethernet HWaddr 00:22:4d:ad:69:ec
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
em0 Link encap:Ethernet HWaddr 00:22:4d:ad:69:f0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17 Память:d0220000-d0240000
eth0 Link encap:Ethernet HWaddr d8:fe:e3:a7:d5:26
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1329 errors:0 dropped:0 overruns:0 frame:0
TX packets:819 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:531178 (531.1 KB) TX bytes:125004 (125.0 KB)
eth1 Link encap:Ethernet HWaddr 00:22:4d:ad:69:ec
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:16 Память:d0320000-d0340000
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1784 (1.7 KB) TX bytes:1784 (1.7 KB)
wlan0 Link encap:Ethernet HWaddr 80:19:34:1e:fe:83
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Инициализировались все интерфейсы.
Можно приступить к настройке hostapd. Пока мы тут рассуждали, версия стала, таки, 2.1.
У меня получился вот такой конфиг /etc/hostapd/hostapd.conf:
hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=4
logger_stdout=-1
logger_stdout_level=4
ssid=TEST
hw_mode=g
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40]
channel=11
macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd.deny
auth_algs=3
ignore_broadcast_ssid=1
ap_max_inactivity=300
wpa=2
wpa_passphrase=my_wpa_passphrase
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
Включаем автоматический запуск hostapd при загрузке системы, для этого в /etc/default/hostapd раскомментируем и редактируем строки:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-B"
RUN_DAEMON="yes"
Далее, не мудрствуя лукаво, я настроил общий доступ. Скрипт для настройки iptables и ip-форвардинга я взял отсюда, привёл его в соответствие своим реалиям и настроил автозапуск. В результате iptables наполняются необходимым содержимым при загрузке системы.
Логично, что нужно текже настроить DHCP-сервер. Решив упростить задачу до минимума, я установил dnsmasq и снёс имеющийся в наличии и конфликтующий с ним bind9. Конфиг прост:
/etc/dnsmasq.conf
# Configuration file for dnsmasq.
#
# Format is one option per line, legal options are the same
# as the long options legal on the command line. See
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# If you want dnsmasq to listen for DHCP and DNS requests only on
# specified interfaces (and the loopback) give the name of the
# interface (eg eth0) here.
# Repeat the line for more than one interface.
interface=br0
# This is an example of a DHCP range where the netmask is given. This
# is needed for networks we reach the dnsmasq DHCP server via a relay
# agent. If you don't know what a DHCP relay agent is, you probably
# don't need to worry about this.
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h
# Give a host with Ethernet address 11:22:33:44:55:66 or
# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
# that these two Ethernet interfaces will never be in use at the same
# time, and give the IP address to the second, even if it is already
# in use by the first. Useful for laptops with wired and wireless
# addresses.
#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
dhcp-host=00:11:22:33:44:55,66:77:88:99:aa:bb,MyDevice1,192.168.0.2
dhcp-host=cc:dd:ee:ff:ee:dd,cc:bb:aa:99:88:77,MyDevice2,192.168.0.3
На самом деле в конфиге ещё куча закомментированных опций, которые позволяют производить очень fine tuning, но такого набора вполне хватает для корректной работы. В принципе, с этого момента аппарат уже работает как домашний маршрутизатор.
После окончания основной настройки я установил и настроил transmission-daemon, aMuled и vsftpd. Собственно говоря, настройка данных сервисов достаточно тривиальна, останавливаться детально на ней не буду. Естественно, доступ к данным ресурсам имеется только из локальной сети, если хочется получить доступ извне, необходимо будет открыть соответствующие порты в iptables.
Вёб-сервер представляет из себя связку Apache 2.4.7 + MySQL Ver 14.14 Distrib 5.5.40. Пока не придумал, чем буду его заполнять: накатить готовый движок и баловаться с дизайном или же просто попрактиковаться в html и php. В любом случае сие имеет для меня прикладное значение. Возможно, в перспективе получится настроить вёб-интерфейс для мониторинга и управления маршрутизатором.
После всех манипуляций остаётся настроить ведение логов: по возможности привести настройки всех процессов, ведущих логи, выводить в них только критически важные уведомления и предупреждения. Идея заключается в снижении количества операций записи, а, соответственно, и негативного влияния на SSD.
Кроме того,
следует
настоятельно рекомендуется включить запуск по cron раз в сутки fstrim (для каждого раздела отдельно). Говорят, хуже не будет точно.
Ффух… Получилось несколько сумбурное описание моих мытарств с собственноручно собранным устройством, но удовлетворение от того, что всё работает просто неописуемо.
В комментарии к предыдущей части статьи многоуважаемый dmitrmax интересовался уровнем энергопотребления сборки. Ну что же, привожу примерные данные, которые мне удалось почерпнуть из открытых источников:
- процессор Intel Atom D2500 — до 10 Вт
- SSD-накопитель Crucial M500 — 3,6 Вт
По остальным крмплектующим данных сходу не нашлось, но практически везде в характеристиках сетевой карты и Wi-Fi модуля пишут «низкое энергопотребление». Если грубо накинуть на всё про всё 10 Вт (прочее железо, интегрированные сетевушки, etc), то итого получается около 25 Вт — не так уж и много, полагаю…
Вроде бы ничего не забыл, упомянул все ключевые моменты. За подробностями прошу в комментарии. Спасибо за внимание! (-;
UPD: Господин Revertis справедливо заметил, и я с ним соглашусь, что изначально при установке системы не следовало отмечать DNS-сервер, чтобы потом его сносить (речь о bind9), но в статье я описывал именно путь, который проделал — со всеми его ошибками и закоулками. И да, соглашусь, что nginx лучше, чем Apache, более того — я его даже заменю. Спасибо за совет.
Ubuntu является одним из наиболее популярных дистрибутивов операционной системы Linux. Несмотря на то, что в Ubuntu нет явно описанных инструментов для настройки роутера, с помощью некоторых команд и программ можно легко превратить свой компьютер в вай-фай роутер.
Для начала, вам потребуется подключение к интернету и установленный пакет Network Manager на вашем компьютере. Затем, вы можете использовать команду iwconfig для создания беспроводного интерфейса и настройки его параметров. Эта команда позволяет установить имя вашей сети, тип шифрования и пароль.
Если вы хотите поделиться подключением к интернету через вай-фай, то вам понадобится еще один пакет — hostapd. Он позволяет создавать точку доступа и устанавливать ее параметры, такие как имя сети и пароль. Вы также можете использовать файл конфигурации, чтобы сохранить эти настройки.
Не забудьте настроить IP-адрес и маршрут, чтобы ваш компьютер мог правильно перенаправлять пакеты и обеспечить функционирование точки доступа. Для этого вы можете использовать команды ifconfig и route.
Информация о настройке вай-фай роутера в Ubuntu может быть полезна для пользователей, которые хотят создать домашнюю сеть или предоставить беспроводной интернетсервис. Благодаря простым командам и утилитам в Ubuntu, это можно легко сделать без необходимости покупать и настраивать дополнительные устройства.
Содержание
- Установка Ubuntu и подключение к сети
- Шаги по установке Ubuntu
- Подключение к Wi-Fi сети
- Выбор вай-фай роутера для Ubuntu
- Требования к вай-фай роутеру
- Совместимость с Ubuntu
Установка Ubuntu и подключение к сети
Перед тем, как настроить вай-фай роутер на Ubuntu, необходимо установить саму операционную систему и подключить компьютер к сети. В этом разделе мы рассмотрим основные шаги для установки Ubuntu и подключения к локальной сети или интернету.
- Загрузите образ Ubuntu с официального сайта и создайте загрузочный USB-накопитель или DVD.
- Подключите загрузочный носитель к компьютеру и включите его.
- На экране появится меню выбора языка. Выберите нужный язык и нажмите «Установить Ubuntu».
- Выберите режим установки: «Обычная установка» или «Установка с сохранением данных».
- Выберите раздел жесткого диска, на который будет установлена Ubuntu. Если у вас уже установлена другая операционная система, убедитесь, что вы выбрали правильный раздел.
- Настройте параметры времени, языка и клавиатуры.
- Создайте учетную запись пользователя и задайте пароль.
- Подождите, пока установка завершится.
- Перезагрузите компьютер и выберите установленную Ubuntu в меню загрузки.
После установки Ubuntu вам потребуется подключить компьютер к сети для доступа в Интернет. Если у вас уже есть кабельное подключение, подключите сетевой кабель к компьютеру и модему или роутеру. Ubuntu обычно автоматически настраивает сетевое подключение и подключается к интернету.
Если у вас есть беспроводной роутер, вы также можете подключиться к нему через Wi-Fi. Чтобы это сделать, щелкните на значок сети в правом верхнем углу панели задач и выберите доступную Wi-Fi сеть. Введите пароль, если это требуется. Ubuntu установит подключение к выбранной сети.
Поздравляем, вы успешно установили Ubuntu и подключились к сети! Теперь вы готовы настраивать вай-фай роутер и использовать его функции на Ubuntu.
Шаги по установке Ubuntu
Установка операционной системы Ubuntu может быть выполнена следующими шагами:
- Скачайте образ Ubuntu с официального сайта.
- Создайте загрузочный USB-накопитель с помощью программы Rufus или аналогичного инструмента.
- Подключите USB-накопитель к компьютеру и перезагрузите его.
- Запустите установку Ubuntu и следуйте инструкциям на экране.
- Выберите язык, раскладку клавиатуры и регион.
- Установите параметры подключения к сети Wi-Fi, если необходимо.
- Выберите, какую версию Ubuntu вы хотите установить (десктопную или серверную).
- Выберите раздел на жестком диске, на котором будет установлена Ubuntu.
- Создайте учетную запись пользователя и указывайте пароль.
- Дождитесь завершения установки и перезагрузите компьютер.
После выполнения этих шагов Ubuntu будет установлена на ваш компьютер и готова к использованию.
Подключение к Wi-Fi сети
Для подключения к Wi-Fi сети на Ubuntu необходимо выполнить следующие шаги:
- Откройте меню «Настройки системы», выберите раздел «Wi-Fi».
- В списке доступных сетей выберите нужную сеть и нажмите на нее.
- В появившемся диалоговом окне введите пароль безопасности Wi-Fi сети.
- Нажмите кнопку «Подключиться».
- После успешного подключения к сети вы увидите сообщение об успешном подключении.
Если у вас возникли проблемы с подключением, вы можете попробовать выполнить следующие действия:
- Проверьте правильность введенного пароля Wi-Fi сети. Убедитесь, что вы вводите пароль верно.
- Перезагрузите ваш роутер и повторите попытку подключения.
- Проверьте настройки безопасности вашего роутера и убедитесь, что они совпадают с настройками безопасности вашей Wi-Fi сети.
- Если проблема не решена, обратитесь к вашему интернет-провайдеру для получения помощи.
После успешного подключения к Wi-Fi сети вы сможете пользоваться интернетом без проводов и наслаждаться высокой скоростью передачи данных.
Выбор вай-фай роутера для Ubuntu
Выбор вай-фай роутера для Ubuntu играет важную роль при создании надежной и стабильной беспроводной сети. Все роутеры не подходят для использования на операционной системе Ubuntu, поэтому необходимо учесть несколько ключевых факторов при выборе роутера.
Один из самых важных факторов — поддержка роутером операционной системы Ubuntu. Некоторые роутеры имеют ограниченную поддержку или драйверы для Windows или MacOS, поэтому необходимо обратить внимание на наличие поддержки Ubuntu.
Другой важный фактор — стандарт Wi-Fi, который поддерживается роутером. Оптимально выбрать роутер, поддерживающий стандарт Wi-Fi 5 (802.11ac) или Wi-Fi 6 (802.11ax), чтобы быстро и стабильно подключаться к сети.
Также стоит обратить внимание на мощность передатчика роутера. Роутеры с высокой мощностью передатчика обеспечивают большую площадь охвата и лучшую скорость соединения.
Дополнительные функции роутера также могут быть важными при выборе. Например, наличие USB-порта, поддержка VPN, фильтрация контента или управление родительским контролем могут быть полезными функциями для пользователей Ubuntu.
Важно также обратить внимание на отзывы и рекомендации пользователей, чтобы получить представление о производительности и надежности выбранного роутера.
Учитывая все эти факторы, можно выбрать подходящий вай-фай роутер для использования на операционной системе Ubuntu, который обеспечит стабильное и быстрое беспроводное подключение к сети.
Требования к вай-фай роутеру
При выборе вай-фай роутера для использования на Ubuntu следует обратить внимание на несколько важных требований:
1. Поддержка стандарта Wi-Fi. Роутер должен поддерживать стандарты Wi-Fi, такие как 802.11ac или 802.11n, чтобы обеспечить высокую скорость и стабильную работу сети.
2. Двухдиапазонность. Рекомендуется выбирать роутеры, которые работают как на 2,4 ГГц, так и на 5 ГГц частотах. Это позволит распределять устройства по разным частотам и избежать перегрузки на одной из них.
3. Мощность сигнала. Роутер должен иметь достаточно мощный сигнал, чтобы покрыть все помещение, где будет использоваться сеть Wi-Fi.
4. Наличие Ethernet-портов. Для подключения устройств по проводной сети, роутер должен иметь достаточное количество Ethernet-портов.
5. Наличие USB-портов. USB-порты позволят подключить к роутеру различные устройства, такие как USB-накопители или принтеры.
6. Надежность. Выбирая роутер, следует обратить внимание на отзывы пользователей и репутацию производителя, чтобы удостовериться в надежности и качестве работы устройства.
7. Наличие удобного интерфейса управления. Роутер должен иметь интуитивно понятный и удобный интерфейс управления, чтобы легко настраивать и контролировать работу сети.
Учитывая эти требования, вы сможете выбрать вай-фай роутер, который идеально подойдет для использования на Ubuntu и обеспечит бесперебойную и стабильную работу вашей сети Wi-Fi.
Совместимость с Ubuntu
Вай-фай роутеры, как правило, совместимы с операционной системой Ubuntu. Ubuntu поддерживает большинство распространенных беспроводных протоколов, таких как 802.11b, 802.11g и 802.11n.
Для обеспечения полной совместимости и наилучшей производительности, рекомендуется установить драйверы Wi-Fi на Ubuntu. Драйверы обычно доступны через меню «Дополнительные драйверы» в системных настройках Ubuntu.
После установки драйверов Wi-Fi, вам понадобится настроить соединение с вай-фай роутером. Убедитесь, что ваш роутер настроен на использование правильного протокола безопасности (например, WPA2) и введите правильные учетные данные для подключения.
Если ваш роутер не автоматически определяется Ubuntu, вы можете попытаться вручную настроить соединение с помощью сетевых настроек Ubuntu. Для этого откройте меню «Настройки» и перейдите в раздел «Сеть». Там вы можете добавить новое соединение Wi-Fi и ввести параметры роутера вручную.
Проверьте совместимость вашего вай-фай роутера с Ubuntu перед покупкой, потому что некоторые роутеры могут не иметь официальной поддержки для этой операционной системы. Вы можете сделать это, обратившись к описанию продукта на сайте производителя или посмотреть на Ubuntu-совместимые роутеры в Интернете.
В целом, подключение вай-фай роутера к Ubuntu должно быть достаточно простым процессом, который требует только небольшой настройки и правильных драйверов. Убедитесь, что следуете инструкциям и рекомендациям, представленным в документации вашего роутера и операционной системы Ubuntu.
Краткое руководство по настройке роутера в связке iptables + dnsmasq на ОС Ubuntu Server 21.04, а также проброс портов по IP-адресам машин в локальной сети.
Исходные данные
Имеем на машине 2 сетевых интерфейса:
enp0s3 — для внешней сети 192.168.1.0/24
enp0s8 — для внутренней сети 192.168.53.0/24
Также у нас есть шлюз во внешней сети. Это маршрутизатор с IP-адресом 192.168.1.1
Наша задача — настроить доступ в Интернет для внутренней сети.
В первую очередь нам необходимо настроить сетевые интерфейсы. Для этих целей Ubuntu Server 21.04 использует netplan.
Открываем файл /etc/netplan/00-installer-config.yaml
# sudo nano /etc/netplan/00-installer-config.yaml
и приводим его к такому виду:
# This is the network config written by 'subiquity' network: ethernets: enp0s3: addresses: - 192.168.1.53/24 gateway4: 192.168.1.1 nameservers: addresses: - 192.168.1.1 search: [] enp0s8: addresses: - 192.168.53.1/24 nameservers: addresses: [] search: [] version: 2
Перезапускаем netplan
# sudo netplan generate # sudo netplan apply
Переходим к настройке файрволла (правил iptables).
Создадим каталог /etc/firewall, в нём скрипт iptables.sh и открываем его
# sudo mkdir /etc/firewall # sudo touch /etc/firewall/iptables.sh # sudo nano /etc/firewall/iptables.sh
в нём пропишем такой код:
#!/bin/sh sysctl -w net.ipv4.ip_forward=1 iptables -F iptables -t nat -A POSTROUTING -o enp0s+ -j MASQUERADE iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A INPUT -i enp0s+ -j ACCEPT iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t filter -A FORWARD -p icmp -j ACCEPT iptables -t filter -A FORWARD -i lo -j ACCEPT iptables -t filter -A FORWARD -i enp0s+ -j ACCEPT iptables -t filter -A FORWARD -o enp0s+ -j ACCEPT iptables -t filter -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables -t filter -A FORWARD -j REJECT --reject-with icmp-host-prohibited
и сделаем скрипт исполняемым
# sudo chmod +x /etc/firewall/iptables.sh
Теперь создадим службу rc-local. Для этого создадим файл /etc/systemd/system/rc-local.service
# sudo touch /etc/systemd/system/rc-local.service
откроем его
# sudo nano /etc/systemd/system/rc-local.service
в внесём такой него код:
[Unit] Description=/etc/rc.local ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
Затем создадим файл /etc/rc.local и откроем его
# sudo touch /etc/rc.local # sudo nano /etc/rc.local
пропишем в него такой код:
#!/bin/sh -e /etc/firewall/iptables.sh exit 0
и сделаем его исполняемым
# sudo chmod +x /etc/rc.local
Далее перезагрузим машину
# sudo shutdown -r now
Проверим, работают ли созданные правила. Для этого выполним команду
# sudo iptables -L
и, если iptables работает корректно, получим примерно такой ответ
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
После этого переходим к настройке dnsmasq.
Устанавливаем его
# sudo apt install dnsmasq
открываем конфиг
# sudo nano /etc/dnsmasq.conf
и в самом конце файла добавляем:
bind-interfaces domain-needed bogus-priv interface=enp0s8 resolv-file=/etc/resolv.conf dhcp-range=192.168.53.31,192.168.53.130,24h cache-size=150
Запускаем службу dnsmasq
# sudo systemctl start dnsmasq
или лучше вообще перезагрузим машину
# sudo shutdown -r now
После этого на других машинах в сети проверяем сетевые настройки и выход в Интернет.
При необходимости в пробросе портов по IP-адресам для доступа из внешней сети, например, необходимо пробросить порт RDP 3389/TCP на IP-адрес машины 192.168.53.25, выполним такие команды:
# sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 3389 -j DNAT --to-destination 192.168.53.25:3389 # sudo iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 3389 -j ACCEPT
Для того, чтобы эти правила срабатывали после каждой загрузки системы, их необходимо прописать в файл /etc/firewall/iptables.sh
Проброс других портов осуществляется аналогичным образом.
Этот гайд я хотел написать очень давно. В свое время много искал в инетах, находил кусками по разным аспектам создания домашнего роутера на Linux, но вот полноценного гайда от и до так и не нашел.
Актуальность
В настоящее время скорости подключения предоставляемые провайдерами выросли на порядки и с другой стороны прибавилось различных устройств дома, которые потребляют этот интернет: если например четверо жителей в квартире, у каждого телефон, у папы еще и планшет и у дочки планшет и еще есть пару настольных компьютеров или ноутбуков, то это уже 8 устройств потребляющих интернет. Кроме этого еще и тип потребляемого контента изменился, от страниц HTML все больше переходит к прослушиванию музыки, просмотру видео, или же загрузки видео. Одним слово скорость и обьемы передачи данных выросли значительно. Все это накладывает определенные требования на роутеры. Обычные общедоступные роутерытипа D-Link, TP-Link, ASUS и т.п., купленные 2-3 года назад уже захлёбываются от пропускаемого через них трафика. Их мощности уже не позволяют обрабатывать такой поток, они просто не рассчитаны на него. Все это выражается в разного рода задержках, потере пакетов, ухудшении качества видео, потере кадров, глюках в играх и тому подобных проблем. Роутеры нового поколения уже рассчитаны на подобный трафик, но стоят денег и немалых. От 10 до 30 тысяч рублей. Но ведь есть же другой путь. У многих еще валяются в кладовке забытые старые компы, где-то еще в разобраных корпусах, а если не валяются, то в изобилии полно преложений на том же Авито о продаже по цене около 1 тыс. рублей. А ведь из этого компа можно собрать роутер на операционной системе Linux, и работать он будет на порядок быстрее самого быстрого роутера, даже тот же Pentium 4. В настройке нет ничего сложного, и любой человек с минимальными знанимями в области информационных технологий, который отличает IP адрес от MAC адреса сможет настроить себе роутер на LINUX, за час, два и забыть обо всех проблемах с инетом навсегда, при этом не тратя безумных денег. Вот об этом и будет наш гайд.
Железо
Подойдет практически ЛЮБОЙ компьютер. Главное требование — наличие 2-х сетевых карт. Одна может быть встроенная, вторую можно купить за 100-250 рублей и вставить в PCI (PCI-E) слот. Не рекомендую использовать USB-сетевые карты, хотя это и возможно, но в этом гайде я тонкости работы с USB картами описыать не буду.
В нашем гайде мы будет использовать Linux дистрибутив Centos 7, который имеет минимальные рекомендуемые системные требования:
Память: 1ГБ на логический ЦПУ (ядро процессора)
Диск: 20 ГБ
Одно замечание. Обычно роутеры стоят в квартире: в коридоре или в комнате и шум от работающих вентиляторов (а компьютере их как минимум 2) может здорово раздражать. Если комьютер старый, то рекомендую заменить вентиляторы. Разберите блок питания, надо открутить всего 4 болта, и почистить или поменять (открутить еще 4 винта и скрутить 2 проводка) вентилятор на блоке питания. Тоже сделать с вентилятором на процессоре. На работу самого роутера это никак не повлияет.
Допущения
В своем гайде я предпологаю, что провайдер предоставляет вам подключение по читому Ethernet, без всяких PPOE и других VPN технологий и аутентификация абонента происходит по MAC адресу. Т.е. на внешнем интерфейсе роутера должен быть определенный MAC адрес, чтобы работал интеренет. Никаких паролей не требуется. Сейчас так подключено 90% всех пользователей интернета в России.
Загрузка образа и создание загрузочной флешки
Образ загружаем с официального сайта, загружаем минимальную конфигурацию:
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
Загружаем устанавливаем и запускаем программу записи образов дисков на флешку, вставляем флешку — все информация на флешке будет перезаписана.
https://sourceforge.net/projects/win32diskimager/
1 — нажимаем на кнопку с папкой, выбираем загруженный образ. По умолчанию программа показывает только файлы с расширением .img поэтому выбираем показать все файлы *.*
2 — выбираем флекшу для записи
3 — нажимаем записать. Процесс записи начнется и в результате у вас будет загрузочная флешка.
Установка Centos 7
Зайдите в БИОС и установите загрузку с флешки с Centos.
Не хочу останавливаться подробно на установке, есть достаточно подробное описание с картинками на русском языке: https://sysadmin-note.ru/ustanovka-centos-7/
Там все просто, нам подойдут настройки по умолчанию, как раз как описано.
Подключение в существующую сеть
Определите какой сетевой интерфейс будет внешним, т.е. смотрящим в Интренет, а какой внутренним — смотрящим в локальную сеть. Лучше даже подписать на корпусе, чтобы не спутать потом. Встроенную карту лучше использовать как внутренний интрефейс, в вставленную — как внешний, потому что в общем случае скорости на внешнем интрефейсе ниже чем в локалке.
Нам надо закачать необходимые пакеты, поэтому подключите компьютер к существующей сети ВНЕШНИМ интерфейсом. Предпологаю, что у вас есть доступ в интернет и IP адреса выдаются существующим роутером.
Заходим в Linux либо под пользователем root, если вы задали при настройке его пароль, либо под созданным пользователем в процессе настройки. Даем следующую команду:
ip a
она покажет сетевые интерфейсы и их настройки:
[user1@router ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:db:00:70:5e brd ff:ff:ff:ff:ff:ff
inet 192.168.33.1/24 brd 192.168.33.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,DOWN,LOWER_DOWN> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether f4:6d:04:3e:5e:9e brd ff:ff:ff:ff:ff:ff
valid_lft 26366sec preferred_lft 26366sec
Что же мы здесь видим? lo — внутренний интерфейс, присутствует по умочанию нам особенно не интересен, enp1s0 и enp2s0 это и есть наши сетевые карты причем одна в состоянии UP с настроенным внутренним IP адресом — это та, которую мы подключили в нашу сетку (будущий внешний интерфейс), а вторая в состоянии DOWN это будущий внутренний интерфейс, к которому не подключен кабель.
Если это так то можете пропустить следущий шаг. Если вы видите интерфейс в состоянии UP но inet адреса на нем нет, надо будет его настроить.
Предварительная настройка интерфейса
Заходим под пользователем root. Даем команду nmtui, открывается меню настройки интерфейсов. Вибираем Edit Connection, нажимает Enter.
В списке интерфейсов вибираем нужный нам интерфейс, нажимаем Enter
Перемещение по пунктам меню осуществляеся с помощью клавиши Tab. Переходим на пункт Show напротив IPv4 CONFIGURATION, нажимаем Enter.
Выставляем или убеждаемся, что настойки выставлены IPv4 CONFIGURATION — Automatic, Automatically connect — X ( с помощью клавиши пробел), Available for all users — X. Перемещаемся на ОК и нажимаем Enter.
Опять попадаем в меню выбора интрефейсов нажимаем Back, попадаем в главное меню, стрелочкой вниз доходим до Quit, нажимаем Enter. Выходим из программы.
Инициируем сетевые интерфейсы, чтобы применились настройки, даем команду
service network restart
Снова даем команду ip a убеждаемся что ip адрес получен.