- Роутер на Ubuntu Server 21.04
- Похожие посты:
- Роутер на Ubuntu Server 21.04: 4 комментария
- Finding Your Router’s IP Address (Default Gateway) in Ubuntu and Other Linux
- Method 1: Get the router’s IP address in Linux using GUI
- Method 2: Get the router’s IP address in Linux command line
- Bonus tip
- Как узнать ip роутера
- КАК УЗНАТЬ IP РОУТЕРА В LINUX?
- ЛОКАЛЬНЫЙ АДРЕС РОУТЕРА
- ВНЕШНИЙ АДРЕС РОУТЕРА
- КАК УЗНАТЬ IP АДРЕС РОУТЕРА В WINDOWS?
- ВЫВОДЫ
Роутер на Ubuntu Server 21.04
Краткое руководство по настройке роутера в связке 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
# 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
и сделаем его исполняемым
Далее перезагрузим машину
Проверим, работают ли созданные правила. Для этого выполним команду
и, если 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.
и в самом конце файла добавляем:
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
# sudo systemctl start dnsmasq
или лучше вообще перезагрузим машину
После этого на других машинах в сети проверяем сетевые настройки и выход в Интернет.
При необходимости в пробросе портов по 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
Проброс других портов осуществляется аналогичным образом.
Похожие посты:
Роутер на Ubuntu Server 21.04: 4 комментария
У меня enp2s0 = wan , enp3s1 = Lan очен неясно iptables.sh куда поставит Лан куда ван интерфейс. у тебе всегда enp0s+
enp0s+ означает любой интерфейс, который начинается с enp0s, то есть, если по статье, то это enp0s3 и enp0s8. В вашем случае наверное будет лучше прописать enp+, или перечислить их через запятую, чтобы не писать одно и то же правило два раза.
Раборает. Единствено не работает iptables -t nat -A PREROUTING -i enp0s3 -p tcp —dport 3389 -j DNAT —to-destination 192.168.53.25:3389 «iptables v1.8.7 (nf_tables): unknown option «—port»»
вы писали, что у вас интерфейс enp2s0 смотрит в Интернет, а прописываете enp0s3… исправьте, и всё должно получиться.
Finding Your Router’s IP Address (Default Gateway) in Ubuntu and Other Linux
Looking for a way to connect to your router but don’t know its address? Here’s how to get the IP address of your router in Ubuntu and other Linux systems.
You probably already know how to get your system’s IP address in Linux. But how do you know the IP address of your router? I am not talking about the public-facing IP which you can get by connecting to websites like Show My IP or simply searching for ‘what is my ip’ in DuckDuckGo. I am talking about the default gateway IP which your Linux desktop uses to connect to it. Why do you need it? Well, if you need to change the SSID, password, or other configuration of your wi-fi/network, you have to connect to it. And the simplest way is to type the router’s IP address in a web browser and then use the router’s username and password. While I cannot help you with the username and password of your router, I can surely tell you how to get its IP. As always, I’ll show both GUI and command-line methods.
Method 1: Get the router’s IP address in Linux using GUI
It’s quite simple actually. I am using GNOME desktop with Ubuntu here. If you use some other desktop environments, screenshots may look different. Open System Settings: Now go to Wi-Fi or Network (if you are using a wired, Ethernet connection). Here, click on the little settings symbol beside your currently used network. It will open a new window with several details about your connection such as the IP address, DNS, and Mac address. You can also see the saved wifi password under the security tab. You’ll also see an entry named ‘Default Route’. This is what you are looking for. The IP address of your router. Your system and all other devices on your network connect to the router using this IP address. This is the setup most households have. Now that I have shown the GUI method, let’s go to the terminal route.
Method 2: Get the router’s IP address in Linux command line
[email protected]:~$ ip route default via 192.168.1.1 dev wlp0s20f3 proto dhcp metric 600 169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 192.168.1.0/24 dev wlp0s20f3 proto kernel scope link src 192.168.1.34 metric 600
The first line, which starts with ‘default via’, gives you the gateway IP. This is your router’s IP address. As you can see, 192.168.1.1 is the IP address of my router. Usually, the router’s IP address is the first number of the subnet. However, this is not a hard and fast rule. I have seen routers with x.y.z.30 addresses as well.
Bonus tip
In case you didn’t know, you have to use the Ctrl+C to stop a running command in Linux. I hope you find this tip useful when you need it.
Как узнать ip роутера
Большинство домашних сетей получают доступ к интернету через маршрутизаторы или модемы. Нам не так часто нужно менять настройки маршрутизатора, но временами возникает такая необходимость. Обычно эти настройки можно открыть, набрав локальный ip адрес маршрутизатора в строке браузера. Также иногда может понадобится узнать ip адрес роутера для других действий или тестирования работы сети.
К сожалению, нет одного стандартного адреса, который бы использовали все маршрутизаторы, очень часто используется 192.168.1.1, но это не является правилом и можно встретить любые адреса из диапазона локальных сетей. На самом деле есть множество способов как узнать ip роутера wifi, так и в обычной сети.
КАК УЗНАТЬ IP РОУТЕРА В LINUX?
Первое место, где стоит посмотреть независимо от вашей операционной системы — это документация для вашего роутера. Там точно есть инструкция по настройке и в ней указан адрес, на котором можно открыть веб-интерфейс.
ЛОКАЛЬНЫЙ АДРЕС РОУТЕРА
Далее, вы можете использовать утилиты просмотра информации о сети. Компьютер активно взаимодействует с роутером для передачи данных в сеть и мы можем посмотреть адрес шлюза, который и будет адресом роутера. Команда ip:
Здесь в первой же строке будет отображен адрес шлюза, через который передается весь трафик по умолчанию, в моем случае тот же самый 192.168.1.1. Если вы не хотите использовать команду ip, можно посмотреть таблицу маршрутизации пакетов командой route:
Тут тоже первая запись будет означать адрес маршрутизатора. Еще один путь узнать ip маршрутизатора — посмотреть таблицу записей ARP:
Здесь все еще проще, если компьютер взаимодействует только с роутером, то будет выведена одна запись — адрес роутера. Подобную информацию может выдать и утилита netstat:
ВНЕШНИЙ АДРЕС РОУТЕРА
Если вы счастливый обладатель белого IP адреса или даже серого, который на спрятан за NAT и вас интересует как узнать внешний ip роутера, то для этого тоже есть простая команда:
Еще можно открыть эту же страницу в браузере:
КАК УЗНАТЬ IP АДРЕС РОУТЕРА В WINDOWS?
Самый простой способ узнать ip адрес роутера в Windows — использовать утилиту командной строки ipconfig. Кликните правой кнопкой по значку пуск, затем выберите «Командная строка»
В открывшемся окне наберите:
Адрес роутера будет отображен напротив «Основной адрес шлюза». Еще один способ узнать IP адрес роутера — это использовать стандартную утилиту настроек. Кликните по значку сетевые подключения, выберите «Открыть центр управления сетями и общим доступом»:
Кликните по сети, к которой вы подключены:
Затем нажмите кнопку сведения:
Здесь и будет отображен адрес шлюза среди прочей другой информации. Если вам нужен внешний адрес, вы можете открыть в браузере те же сайты, что и для Linux.
ВЫВОДЫ
В этой статье мы рассмотрели как узнать ip роутера в сети. Как видите, это совсем не сложно, и существует множество методов, из которых вы можете выбрать тот, который будет более удобным для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.