Home » Linux » CentOS » Настройка шлюза на CentOS 7

Настройка шлюза на CentOS 7

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

В нашем распоряжении будет следующий сервер для настройки шлюза:

# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

Использовался образ minimal для установки CentOS 7. Если вы еще не выполнили установку, рекомендую воспользоваться моим материалом на эту тему. На сервере две сетевые карты eth0 и eth1:

  • eth0 подключена к интернету
  • eth1 подключена к локальной сети вместе с компьютерами

В данной статье мы выполним необходимые предварительные настройки на сервере, включим nat, настроим firewall и установим средство мониторинга сетевой активности.

Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера - попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети - clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал о настройке clearos.

Предварительная настройка сервера

Любую настройку сервера я рекомендую начинать с обновления:

# yum -y update

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

# yum -y install mc

Дальше отключаем selinux. Находим файл /etc/sysconfig/selinux и редактируем его:

# mcedit /etc/sysconfig/selinux

Приводим строку с соответствующим параметром к следующему виду:

SELINUX=disabled

Чтобы применить изменения, перезагружаем сервер:

# reboot

Более подробно о базовой настройке сервера CentOS 7 читайте отдельно. Мы же двигаемся дальше.

Теперь настроим сеть. Я очень подробно рассмотрел вопрос настройки сети в CentOS 7 в своем отдельном материале. Рекомендую с ним ознакомиться. Здесь же я кратко выполню необходимые команды, без пояснений.

Сначала удаляем NetworkManager. Он нам не понадобится, выполним все настройки вручную. Иногда он может вызывать непонятные ошибки, я предпочитаю им не пользоваться:

# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service

Теперь включаем классическую службу сети в CentOS 7:

# systemctl enable network.service

Настраиваем сетевые интерфейсы:

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR=00:15:5D:01:0F:06
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
NAME="eth0"
UUID="4e65030c-da90-4fb8-bde4-028424fe3710"
ONBOOT="yes"
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
HWADDR=00:15:5d:01:0f:12
TYPE=Ethernet
ONBOOT=yes
IPADDR=192.168.10.1
NETMASK=255.255.255.0

Перезапускаем службу сети:

# systemctl restart network.service

Смотрим, что получилось:

# ip a

Сетевые параметры в CentOS 7

Вы настраивайте сеть в зависимости от своих условий. Если внешний адаптер получает настройки не по dhcp, как у меня, а в статике, то не забудьте настроить шлюз по-умолчанию и dns сервер. Как это сделать написано в моей статье о сетевых параметрах, ссылку на которую я приводил выше.

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

Включаем маршрутизацию, firewall и nat

Чтобы сервер мог маршрутизировать пакеты между сетевыми адаптерами, необходимо выполнить следующую настройку. Находим файл /etc/sysctl.conf и вставляем туда строку:

# mcedit /etc/sysctl.conf
net.ipv4.ip_forward = 1

Чтобы заработала настройка, выполняем команду:

# sysctl -p

Теперь приступаем к самому главному - настройке фаерволла. Опять же отсылаю вас к своему материалу, где я очень подробно рассмотрел вопрос настройки iptables в CentOS 7. Там же приведен готовый скрипт для iptables. Так что выполняем все необходимые действия без пояснений.

Отключаем firewalld:

# systemctl stop firewalld
# systemctl disable firewalld

Устанавливаем службы iptables:

# yum -y install iptables-services

Скачиваем скрипт с правилами iptables.sh. Данные правила включают NAT, закрывают доступ к серверу снаружи, разрешают пинги, разрешают всем пользователям локальной сети доступ в интернет. Дополнительный функционал отключен. В скрипте подробно описаны все правила. Вам необходимо только заменить в начале переменные на свои. В моем случае это будет выглядеть так:

# Внешний интерфейс
export WAN=eth0
export WAN_IP=192.168.1.25
# Локальная сеть
export LAN1=eth1
export LAN1_IP_RANGE=192.168.10.1/24

Помещаем отредактированный скрипт в /etc/iptables.sh и делаем его исполняемым:

# chmod 0740 /etc/iptables.sh

Запускаем iptables:

# systemctl start iptables.service

Добавляем их в автозагрузку:

# systemctl enable iptables.service

Выполняем скрипт с правилами:

# /etc/iptables.sh

Проверяем установленные правила:

# iptables -L -v -n

активные правила iptables

Если у вас то же самое, значит вы все сделали правильно.

По сути наш шлюз уже готов и может обслуживать клиентов. Но не работает одна важна служба, без которой нормальной работы с интернетом не получится. Нам нужно настроить кэширущий dns сервер для клиентов локальной сети. Можно пойти по простому и очень простому пути. Простой путь это выполнить простейшую настройку dns сервера bind. Как это сделать у меня опять же подробно написано отдельно - настройка Bind 9 в CentOS 7. Рекомендую ознакомиться, там рассмотрены интересные нюансы настройки.

Очень простой путь это установить dnsmasq, который помимо dns сервера включает в себя еще и dhcp сервер, который нам может пригодиться.

Установка и настройка dnsmasq в CentOS 7

С большой долей вероятности dnsmasq у вас уже установлен. Проверить это можно следующей командой:

# rpm -qa | grep dnsmasq
dnsmasq-2.66-14.el7_1.x86_64

Если вывод такой же, значит пакет уже стоит. Если нет, то устанавливаем dnsmasq командой:

# yum -y install dnsmasq

Редактируем файл конфигурации /etc/dnsmasq.conf и приводим его к очень простому виду:

# mcedit /etc/dnsmasq.conf

domain-needed
bogus-priv
interface=eth1
dhcp-range=192.168.10.50,192.168.10.150,24h

Запускаем dnsmasq:

# systemctl start dnsmasq

Либо перезапускаем, если он был у вас запущен:

# systemctl restart dnsmasq

Добавляем dnsmasq в автозагрузку:

# systemctl enable dnsmasq

Я редактировал конфиг, когда у меня уже был установлен и запущен dnsmasq. И он то ли завис, то ли просто затупил, но я не мог его перезагрузить или остановить с помощью systemctl. Пришлось перезагрузить сервер. После этого все нормально заработало. Клиент на windows получил сетевые настройки. Информация об этом появилась в логе /var/log/messages. Я проверил на клиенте интернет, все было в порядке, он работал.

На этом настройка завершена, шлюзом под CentOS 7 можно пользоваться.

Анализ сетевой активности на шлюзе в linux

В данной конфигурации шлюз может успешно функционировать. Но иногда хочется посмотреть, а что вообще на нем происходит. Например, кто-то занимает весь канал, интернет тормозит, а мы как слепые котята сидим и не видим ничего. Нужно какое-то средство для просмотра загрузки сети на шлюзе. И такое средство есть - программа iftop.

Она отсутствует в стандартном репозитории CentOS 7. Для ее установки необходимо подключить репозиторий epel:

# yum -y install epel-release

Устанавливаем iftop на CentOS 7:

# yum -y install iftop

Теперь мы можем смотреть загрузку сети на шлюзе в режиме реального времени. Чтобы увидеть сетевую активность, достаточно запустить iftop:

# iftop

По-умолчанию она слушает интерфейс eth0. Это внешний интерфейс шлюза, на нем все подключения будут отображены от имени самого шлюза и определить, кто же в сети занимает канал мы не сможем. Чтобы это увидеть, необходимо запустить просмотр сетевой активности на локальном интерфейсе. Сделать это не сложно, достаточно запустить iftop с параметром:

# iftop -i eth1 -P

Теперь уже гораздо интереснее. Я еще добавил параметр -P, который отображает порты, по которым проходят соединения. Посмотрим, кто больше всех загружает канал интернета:

Анализ сетевой активности на шлюзе

В моем случае это пользователь с ip 192.168.10.98, на котором я запустил проверку скорости интернета с серверов Яндекса.

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

Заключение

С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.

Давайте разберемся в том, что мы сделали:

  1. Выполнили предварительную настройку сервера, подготовили его к работе.
  2. Включили маршрутизацию.
  3. Настроили firewall.
  4. Включили NAT.
  5. Установили и настроили dnsmasq для организации служб dns и dhcp.
  6. Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.

Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

98 комментариев

  1. Уарабей

    Привет. У меня по статье всё работает, но есть одно большущее НО. Никак не удётся разрешить доступ только вот к определённым ip адресам. Нужно дропать абсолютно всё кроме 2х-3х ip.

  2. Сергей

    Здравстуйте. Сначала огромное вам спасибо! за ваши старания. Реально очень понятно. Но. Можно ли как то на centos 8 включенном просто в локальную сеть организации как отдельный компьютер со свои ip посмотреть кто что потребляет,то есть не делая его шлюзом сети этой? Centos настраивал по вашим статьям.

  3. Александр

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

    • Андрей

      Здравствуйте. У меня стоит proxmox, выход в Интернет даёт виртуальная машина на которой стоит pfsense. За pfsense есть много vlan, так же есть несколько запёртых локальных сетей которые извне не доступны, в этих сетях работают пока вебсервера, если я правильно понял я могу этим шлюзом дать выход вебсерверам доступ наружу и выпустить их в свет так сказать? Если да то это хорошо. Но встаёт один ещё вопрос, веб серверов много и у меня здесь затык в плане, того что если набирает какой то сайт, он открывается, набирает другое имя сайта то открывается первый и не хочет открываться второй и т.д. Что мне нужно тогда сделать что бы у меня могли все сайты с разными именами открываться без проблем. И второй вопрос, мне в pfsense сделать проброс портов до этого шлюза или какие то другие настройки сделать что бы на него поступали запросы о сайтах

  4. Здравствуйте, настраивал сервер по вашему сайту еще года 3 назад, спасибо огромное! Но почему пппое соединение медленное? Кабель гигабит и скорость 250 на тарифе, в ноуте и вифи 200-250 дает, но в серваке ни в какую, куда гуглить? Сам понимаю на уровне прочитал, повторил и забыл, спасибо заранее!
    Да, с сервером тоже гигабит и самба диск расшаренный обменивается с гигабитной скоростью файлами.

    • А в ноуте это же pppoe подключение пробовали? Пров точно дает 250 скорость? Может это он не вытягивает?

      • Да, в ноуте и в роутере, дает 250 без проблем, ноут по локали с файлопомойкой на сервере тоже дает гигабит судя по скоростям, на самом сервере спидтест тоже скорости 60-80 мбит дают

        • Тема низкой скорости при pppoe подключении в linux очень популярна. Гуглится легко - https://www.google.com/search?q=centos+pppoe+low+speed Основная проблема в размере mtu. Надо его пробовать уменьшать на сервере.

          • Спасибо, почитал, из того что нашел это добавил в правила $IPT -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu понятия не имею что это и в / etc / sysconfig / network-scripts / ifcfg-ppp0 добавил PLUGIN='/usr/lib64/pppd/2.4.5/rp-pppoe.so' вроде как про это везде, смысл отдаленно что это скоростной. Так же в файле ifcfg-ppp0 есть строка CLAMPMSS=1450 я подумал что это MTU и поменял на рекомендуемый провайдером и многими интернет ресурсами 1492, но тогда ifup ppp0 подниматься не хочет, мои манипуляции ничего не испортили, уже хорошо, но и пользы не принесли...
            Да по ifconfig MTU на ppp0 1492 стоит какой бы в ifcfg-ppp0 параметр CLAMPMSS не ставил (меньше 1450 нормально поднимается, пробовал 1412 например)

      • Сергей

        Здравстуйте. Сначала огромное вам спасибо! за ваши старания. Реально очень понятно. Но. Можно ли как то на centos 8 включенном просто в локальную сеть организации как отдельный компьютер со свои ip посмотреть кто что потребляет,то есть не делая его шлюзом сети этой? Centos настраивал по вашим статьям.

        • Так просто нет. Трафик должен проходить через сервер, чтобы он мог его анализировать. Возможно ваш текущий шлюз поддерживает технологию netflow. Например, микротики поддерживают. Тогда с него можно направить поток с информацией о трафике на сервер с centos и на нём уже анализировать netflow поток и смотреть, кто куда запросы шлёт.

  5. Блин извиняюсь, все заработало, после того как дал доступ во внутреннюю сеть в фаерволе.

  6. сами попробуйте настроить шлюз придерживаясь чисто своей статьи.

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

  8. все сделал как в статье нифига не заработало

    • Что именно не заработало? Тут нет никакой магии. Просто настройка iptables, dhcp и dns.

  9. Вообще у кого нибудь заработал шлюз настроенной по этой статье? Отпишитесь.

  10. первая сетевая карта использует тот же днс и интернет на ней работает

  11. Добрый день, сделал все как написано в статье, но в локалке интернета нету. Почему? Можете объяснить?

    [root@masterweb sysconfig]# cat /etc/redhat-release
    CentOS Linux release 7.8.2003 (Core)

    [root@masterweb sysconfig]# ifconfig
    ens33: flags=4163 mtu 1500
    inet 192.168.1.170 netmask 255.255.255.0 broadcast 192.168.1.255
    inet6 fe80::20c:29ff:fe52:9d87 prefixlen 64 scopeid 0x20
    ether 00:0c:29:52:9d:87 txqueuelen 1000 (Ethernet)
    RX packets 3805 bytes 391629 (382.4 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 2649 bytes 1344969 (1.2 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    ens34: flags=4163 mtu 1500
    inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255
    inet6 fe80::20c:29ff:fe52:9d91 prefixlen 64 scopeid 0x20
    ether 00:0c:29:52:9d:91 txqueuelen 1000 (Ethernet)
    RX packets 687 bytes 52943 (51.7 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 23 bytes 1550 (1.5 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    device interrupt 16 base 0x2000

    lo: flags=73 mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10
    loop txqueuelen 1000 (Local Loopback)
    RX packets 26 bytes 1798 (1.7 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 26 bytes 1798 (1.7 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@masterweb sysconfig]# sysctl -p /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    [root@masterweb sysconfig]# iptables-save
    # Generated by iptables-save v1.4.21 on Mon Aug 24 02:35:48 2020
    *mangle
    :PREROUTING ACCEPT [478:45325]
    :INPUT ACCEPT [465:43401]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [297:46952]
    :POSTROUTING ACCEPT [297:46952]
    COMMIT
    # Completed on Mon Aug 24 02:35:48 2020
    # Generated by iptables-save v1.4.21 on Mon Aug 24 02:35:48 2020
    *nat
    :PREROUTING ACCEPT [7:1456]
    :INPUT ACCEPT [7:1456]
    :OUTPUT ACCEPT [3:208]
    :POSTROUTING ACCEPT [3:208]
    -A POSTROUTING -o ens34 -j MASQUERADE
    -A POSTROUTING -s 192.168.10.0/24 -o ens33 -j MASQUERADE
    COMMIT
    # Completed on Mon Aug 24 02:35:48 2020
    # Generated by iptables-save v1.4.21 on Mon Aug 24 02:35:48 2020
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -i ens34 -j ACCEPT
    -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
    -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
    -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
    -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
    -A INPUT -i ens33 -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -m state --state INVALID -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
    -A INPUT -i ens33 -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    -A INPUT -i ens33 -p udp -m udp --dport 53 -j ACCEPT
    -A INPUT -i ens34 -p udp -m udp --dport 53 -j ACCEPT
    -A FORWARD -j ACCEPT
    -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -m state --state INVALID -j DROP
    -A FORWARD -i ens34 -o ens33 -j ACCEPT
    -A FORWARD -i ens33 -o ens34 -j REJECT --reject-with icmp-port-unreachable
    -A OUTPUT -o lo -j ACCEPT
    -A OUTPUT -o ens34 -j ACCEPT
    -A OUTPUT -o ens33 -j ACCEPT
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
    COMMIT
    # Completed on Mon Aug 24 02:35:48 2020

    [root@masterweb sysconfig]# systemctl status NetworkManager.service
    ● NetworkManager.service - Network Manager
    Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
    Docs: man:NetworkManager(8)

    [root@masterweb sysconfig]# systemctl status firewalld.service
    ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
    Docs: man:firewalld(1)

    Добавлено через 6 минут
    [root@masterweb etc]# systemctl status dnsmasq
    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Пн 2020-08-24 02:22:47 +06; 20min ago
    Main PID: 11600 (dnsmasq)
    CGroup: /system.slice/dnsmasq.service
    └─11600 /usr/sbin/dnsmasq -k

    авг 24 02:22:47 masterweb systemd[1]: Stopped DNS caching server..
    авг 24 02:22:47 masterweb systemd[1]: Started DNS caching server..
    авг 24 02:22:47 masterweb dnsmasq[11600]: started, version 2.76 cachesize 150
    авг 24 02:22:47 masterweb dnsmasq[11600]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset aut...t inotify
    авг 24 02:22:47 masterweb dnsmasq-dhcp[11600]: DHCP, IP range 192.168.10.50 -- 192.168.10.150, lease time 1d
    авг 24 02:22:47 masterweb dnsmasq[11600]: reading /etc/resolv.conf
    авг 24 02:22:47 masterweb dnsmasq[11600]: using nameserver 192.168.1.1#53
    авг 24 02:22:47 masterweb dnsmasq[11600]: using nameserver 8.8.8.8#53
    авг 24 02:22:47 masterweb dnsmasq[11600]: read /etc/hosts - 2 addresses
    Hint: Some lines were ellipsized, use -l to show in full.

    • Скажу честно - нет времени проверять все конфиги. Что значит, нет инета? Может просто dns не работает? Конкретно за доступ в интернет из локалки отвечает только настройка iptables:

      # Включаем NAT
      $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE

      и разрешение на форвардинг пакетов сервера:

      net.ipv4.ip_forward = 1
  12. Касаемо PPPoE, имею дело с Ростелекомом и Дом.ру как физик, там это настраивать нужно. Но на подконтрольных юрлицах никакого PPPoE и впомине нет (4 разных провайдера). Заметил же вот что: в Cent OS 8 настройку PPPoE переложили на Network Manager. На подопытной машине он в красках показал свою глюкодромную сущность, в итоге половина сайтов через такой шлюз не открывалась. Зато рандомное переименование сетевых интерфейсов исчезло. Плюнул, откатился на 7, всё взлетело должным образом.

  13. МайскийЖук

    Я не понял, а где процесс прописывания данных для установки связи с интернетом по PPPoE? В конкретно вашем примере карта eth0 смотрит в интернет. И что? Где логин? Где пароль для установки связи с интернетом? o_O

    • А при чем тут PPPoE? Это частный случай и весьма редкий. У меня лично за всю карьеру был только один шлюз с PPPoE, а настроил я их десятки.

      • МайскийЖук

        Да какой редкий-то? Большинство провайдеров страны предоставляет интернет по PPPoE, поэтому для сетевой карты, смотрящей в интернет, необходимо устанавливать именно PPPoE-соединение. С вышеприведённая конфигурация интернет локальной сети НЕ раздаёт.

        • У меня другая статистика. Я чаще всего у юриков, а сейчас и физлиц, вижу ethernet. Все остальное экзотика.

          • МайскийЖук

            То есть, никаких высокоскоростных соединений с помощью роутеров уже устанавливать не надо? Тупо UTP-кабель, и всё? Провайдер раздаёт интернет как в локальной сети что ли?

            Я тут явно чего-то не понимаю. Ethernet — это Ethernet, на нём основаны именно _локальные_ сети в организациях. А интернет провайдеры предоставляют либо по PPPoE, либо, что реже, по L2TP. По крайней мере, у меня в городе именно так, я знаю всех провайдеров города.

            Так что всё-таки предлагаю дополнить статью информацией об установке rp-pppoe в CentOS 7 и pppoe-setup для настройки высокоскоростного соединения.

            • Вам бы теорию подтянуть, чтоли.. PPPoE это по большому счету VPN-канал. Он нужен был для того, чтобы не напрягаясь можно было скорость ограничивать. Технологии давно ушли вперед, и теперь достаточно знать mac клиента, а еще лучше так организовать свою сеть, чтобы точно знать, на каком порту висит канал к клиенту. И все. А это в современном мире прям в два счета делается. И никакого PPPoE с его потерей ширины канала на шифрование трафика больше не нужно.
              А то, что у вас в городе провайдеры используют старое оборудование и не хотят учиться использовать новое ПО - это сугубо их проблемы.

              • МайскийЖук

                Вам бы тоже теорию подтянуть что ли. Вы из своей Москвы-то выйдите хотя бы километров на 200-400 и убедитесь, что окромя Москвы с её технологиями существует ещё и другая Россия, где тот же Ростелеком (и прочие провайдеры) предоставляют интернет именно по PPPoE, и никак иначе. Ваш пафос по поводу современного мира совершенно неуместен. Если данная статья выше расчитана исключительно на москвичей — ну, пожалуйста, буду учитывать это при прочтении других статей в будущем.

                • У меня родня в тамбове, я знаю, что происходит в 600км от столицы.
                  И я не видел НИ РАЗУ, чтобы клиенты на провод, приходящий от провайдера сажила СЕРВЕР с CentOS, чтобы на нем шлюз разворачивать. На провод вешается коммутатор, который легчайше поднимает PPPoE, и раздает пьюр инет в сервер-шлюз. А в идеале не пьюр инет даже, а уже слегка фильтрованный, на всякий случай.
                  Так что еще раз предлагаю подучить матчасть и пересмотреть архитектуру сети, изучить best practics и т.д.

                  • МайскийЖук

                    Ну, тогда я тоже настойчиво предлагаю изучить матчасть и убедиться в том, что нормальные администраторы на периферии (за Москву не буду расписываться), наобщавшись с техподдержкой Ростелекома и наиспользовавшись их дебильных роутеров ZTE, создают свои собственные роутеры (они же шлюзы) из не сильно мощных компьютеров с основой на Linux. Так же сделал и я для своей организации. Зато теперь роутингом управляю именно я, а не непонятная китайская хрень, в которой даже правила нормально настроить невозможно. Да даже изначально не понимаю, в чём смысл городить городушки из нескольких устройств, если их количество можно сократить? Зачем мне отдельно роутер, отдельно шлюз и ещё что-либо отдельно, если используемая машина позволяет это прекрасно объединить?

                    • Зачем нужна дорога, если через нее нельзя перевести бабку? (с)
                      Зачем ZTE?
                      Зачем вам шлюз, если можно использовать тот же Microtik и сократить расходы на закупку железного шлюза и на электроэнергию?
                      Не понимаю я вас. Странные вы там у себя в деревнях..

                • МосковскийПарень)))

                  И зачем нам убеждаться в том что нас не интересует уже давно как ? Да еще и деревенские унылые технологии ваши :-)

            • Да, у всех простой ethernet. Провайдер проводит кабель в помещение и все. Настройки либо статика, либо по dhcp. Так сейчас почти везде, где я вижу интернет. В том числе в квартирах у физиков. А у юриков я всегда такое видел. Увидеть PPPoE или vpn для подключения к интернету это редкость. По крайней мере в Москве.

              А так как я в основном сервера в ЦОДах настраиваю, там ничего, кроме ethernet и нету.

  14. Написал "в цепочке INPUT" в 6-м вопросе. Подумал. Больше в FORWАRD наверное, раз шлюз.
    И ще один вопрос тогда
    Мы чистим таблицу mangle, хотя ее не используем в скрипте.
    $IPT -F -t mangle
    $IPT -t mangle -X
    Зачем?

  15. Спасибо за статью и подробное объяснениею. Есть несколько вопросов.
    1. Зачем
    $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT ?
    если есть
    $IPT -A OUTPUT -o $WAN -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT
    $IPT -A OUTPUT -o $LAN1 -j ACCEPT
    Если бы не было 3-х последних (в скрипте они идут первыми), то сервер не смог бы установить исходящее соединение - наверное, DNS бы не резолвился, например
    Тогда, $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT просто лишнее (или копипаст :)), тем более это правило добавится последним (ключ -A). Правильно?
    2. $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP. Сдесь мы защищаем Интернет от атак со своего хоста? . Тем более мы уже открыли все интефейсы на OUTPUT на еще раньше в скрипте. Мне не понятно :(
    3. Если у нас есть статический IP (85.31.203.127 в скрипте) на интерфейсе, который смотрит "в мир", почему мы не можем использовать --to-source SNAT вместо MASQUERADE?
    4. Если мы НАТим (Маскарадим) только определенные локальные IP LAN1_IP_RANGE=10.1.3.0/24 в -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE, почему бы не огрничтить эти адреса и в $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT - чтобы не выпускать наружу локальные (серые) адреса вне диапазона 10.1.3.0/24?
    5. Наличие 3-х нижних правил вместе в одном скрипте мне тоже не понятно если есть всего 2 интерфеса (как и в.1.)
    $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
    $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
    6. Может правила с --state ESTABLISHED,RELATED поднять повыше в скрипте - в шлюзе через них, скорее всего, основной трафик будет идти, пусть лучше первыми срабатывают в цепочке INPUT?
    7. Вместо -m state --state ESTABLISHED,RELATED лчуше бы использовать в учебных целях (ИМХО, конечно) -m conntrack --ctstate ESTABLISHED,RELATED, т.к. первые считаются устаревшими хотя и потдерживаются
    Спасибо.

    • На первый взгляд замечания по существу. Не готов сейчас подробно разбирать правила, немного отошел уже от этой темы. По первому пункту однозначно это правило должно быть в самом начале. Возможно, когда писал статью, раскомментировал то, что у меня самого стоит в блокировке. Я сделал более либеральные правила. Из-за этого нарушилась логика работы, но не функционал. По-умолчанию я блокирую все, что не разрешено, используя этот универсальный конфиг. Отсюда же чистится цепочка mangle, которая реально не используется в данном случае. В пятом пункте то же самое. Открыв всю локалку наружу, я просто упростил правила, и предыдущее с ESTABLISHED,RELATED стало бесполезным.

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

  16. Вообще итоговая цель - шлюз с https прокси на squid, может что нибудь посоветуете (статьи, другой дистрибутив)?

  17. Здравствуйте. Подскажите в чём проблема. Включаю iptables и клиент перестаёт получать настройки автоматом, выключаю всё работает?

    • Неверно правила для iptables составили. Скорее всего блокируете на сервере все входящие соединения.

      На всякий случай уточню. Вы какие настройки клиента имеете ввиду? Сетевые?

      • Да, конечно, iptables ваши (естественно с моими названиями сетевых и IP). Единственное, я использовал только эту статью. У меня всё на виртуалке одна сетевая в инет по DHCP вторая в локалку. И инет тоже не даёт клиенту даже при выключенном iptables, sysctl сделано.

        • DHCP-запрос - широковещательный, его не рекомендуется разрешать для шлюзования. Вам надо поднять DHCP-сервер и DNS-сервер (активный, а не просто маскарад) во внутренней сети (можно на том же шлюзе). И разрешить в iptables широковещательные запросы на внутреннюю сетевую. Я бы советовал вообще поднять домен во внутренней сети (сам так и сделал), но тут тонкий момент, что в настройках сетевых карт должен быть указан сначала DNS-сервер шлюза, а вторым - внутренний, если он есть, иначе винда не хочет в интернет ходить.
          А proxy и squid это совершенно другая пьянка.

          • Дело в том, что есть физический сервер на котором нужно настроить роутер + proxy, для фильтрации инета и ограничения скорости по группам. Чтобы не мучить железо, решил создать лабораторную среду на virtualbox, может я сеть не так настроил на виртуальных машинах (внешняя сетивуха мостом, а внутренняя "Внутренняя сеть")? В итоге не получается поднять шлюз, тоесть виртуальный клиент виртуального сервера получает настройки от dnsmasq но в интернет не выходит....

            • Походу точно накосячил с iptables, подскажите что нужно раскоментировать или дописать в скрипте из статьи, чтобы входящий трафик шел во внутреннюю сеть. Внешняя - enp0s3, IP - 192.168.1.142/24. Внутренняя - enp0s8, IP - 10.0.0.1/22

              • В статье как раз этой случай и описан. Могу только предложить еще раз ее внимательно прочитать.

                • Извиняюсь за настойчивость и тупость, всё из за спешки (прокуратура не дремлет), а тут спешить нельзя... Всё заработало!!!!
                  Огромное спасибо за Ваши статьи и помощь страждущим!!!

  18. Бьюсь 5й день. Поднял виртуалки на гипервизоре. Не могу заставить ВМ из внутренней сети ходить в инет через шлюз на центосе7. С ВМ внутри сети ходят пинги на внутренний и внешний интерфейсы центоси, но дальше - ни шагу. Сам центось пингует ya.ru нормально.
    Делал все по мануалу вплоть до маскарада дхцп, но как я понимаю в тестовой среде это не важно, надо просто заставить ходить в инет пакеты. А они не ходят..
    Схема подключения такая: пк виндовый с "частным виртуальным коммутатором", центос с "частным" + "по умолчанию" (на 2м включен NAT, и он связывает ВМ с хостом и далее дает доступ в инет, хост подключен к роутеру, в тот приходит оптика.
    В чем может быть косяк? Куда копать?

    • По описанию похоже, что не сделано вот это, либо сделано неправильно.

      Находим файл /etc/sysctl.conf и вставляем туда строку:
      # mcedit /etc/sysctl.conf
      net.ipv4.ip_forward = 1
      Чтобы заработала настройка, выполняем команду:
      # sysctl -p

      • Перед и после знака равенства - пробелы! А я их не написал по аналогии со всеми остальными .конф файлами..
        Спасибо!

        • Заработало?

          • Ну.. Из 2х машин, один из которых контроллер домена, а вторая - рядовой сервер в этом домене. Доступ в инет есть только у рядового сервера, DC в инет не хочет по-прежнему. Почему так - понять не могу. Настройки сети такие же, за исключением IP, естественно. буду копать дальше.

            • Если хоть один комп выходит в интернет, значит шлюз работает нормально. Возможно где-то в настройках просто опечатка. Так часто бывает.

  19. VasiliPetrovich

    Мы предотвратили попытку войти в аккаунт из небезопасного приложения.
    Небезопасное приложение
    воскресенье, 24 июня 2018 г., 20:41 (Румыния)
    Romania*

    Автор (Мамкин хакер) походу еще и обидчивый

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

  21. VasiliPetrovich

    Статьи видимо откуда-то перекопированы, потому как полный бред. Не советую ни кому повторять примеры из таких статей.

    • Ну конечно. А 46 тысяч человек, которые перед тобой прочитали статью и не поделились такой важной информацией, дураки. Один ты умный. Что за манера у людей, свое неумение и неспособность понять прочитанное перекладывать на автора, который как минимум, на практике проверил все то, о чем написал.

  22. Здравствуйте, вот такой вопрос, всю настройку проводил только по вашим статьям, есть
    шлюз gw1(CentOS7), eth0 - 10.10.0.4 (статический адрес) и eth1 - 10.10.1.8 (/24)
    за ним есть машина gwtest(CentOS7) - eth0 - 10.10.0.5 (внешний адрес) и eth1 - 10.10.1.9 (/24)
    и есть необходимость чтобы подключиться по ssh (по порту 2345) к этой второй машине через шлюз gw1, машина gwtest не настроена iptables и firewalld я отключил, чтобы не мешали.
    gw1(основные моменты, остальное все как у Вас):
    # Внешний интерфейс
    export WAN=eth0
    export WAN_IP=10.10.0.4

    # Локальная сеть
    export LAN1=eth1
    export LAN1_IP_RANGE=10.10.1.0/24

    # Разрешаем исходящие подключения сервера
    $IPT -A OUTPUT -o $WAN -j ACCEPT
    #$IPT -A INPUT -i $WAN -j ACCEPT

    # Пробрасываем порт в локалку
    $IPT -t nat -A PREROUTING -p tcp --dport 2345 -i ${WAN} -j DNAT --to 10.10.1.9:2345
    $IPT -A FORWARD -i $WAN -d 10.10.1.9 -p tcp -m tcp --dport 2345 -j ACCEPT

    # Разрешаем доступ из локалки наружу
    $IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
    # Закрываем доступ снаружи в локалку
    #$IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
    # Включаем NAT
    $IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE

    если подключаюсь из gw1 к gwtest - ssh -p 2345 admroot@10.10.1.9 - все ОК
    если подключаюсь на внешний интерфейс gwtest по порту 2345 - все ОК
    если на внешний интерфейс gw по порту 2345 - нехочет
    При этом с помощью iftop на gw:
    ru134.telecom.com:64621 => 10.10.1.9:56371 0b 69b 69b
    <= 0b 0b 0b

    А на gwtest - Пусто, соединений нет.

    Не могу понять, что может блокировать соединение

  23. Zerox, можете чуть подробней описать как работает проброс порта?

    • Есть отдельная статья по iptables, там есть готовый пример. Достаточно только поменять адреса и порты. Описывать работу iptables сложно, так как этот фаервол сам по себе сложный. Документации много в инете, я сам иногда читаю, когда забываю что-то. Есть хорошие статьи с подробным описанием работы на русском. По запросу "iptables проброс портов" все находится. Я стараюсь не писать о том, что уже хорошо описано у других. Пример хорошей статьи по теме - http://www.it-simple.ru/?p=2250

      • Спасибо большое за своевременный ответ, никак не могу побороть ошибку при restart netwrok,
        # /etc/init.d/network restart
        Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
        [СБОЙ ]
        # systemctl status network.service ● network.service - LSB: Bring up/down networking
        Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
        Active: failed (Result: exit-code) since Пт 2018-02-02 11:56:55 MSK; 42s ago
        Docs: man:systemd-sysv-generator(8)
        Process: 2024 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)

        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost network[2024]: RTNETLINK answers: File...
        фев 02 11:56:55 serverdsm.localhost systemd[1]: network.service: control p...
        фев 02 11:56:55 serverdsm.localhost systemd[1]: Failed to start LSB: Bring...
        фев 02 11:56:55 serverdsm.localhost systemd[1]: Unit network.service enter...
        фев 02 11:56:55 serverdsm.localhost systemd[1]: network.service failed.
        Hint: Some lines were ellipsized, use -l to show in full.

        уже кучу форумов перечитал, ничего не помогло, думал что мешает NetworkManager, но он отключен
        # systemctl list-unit-files | grep NetworkManager
        NetworkManager-dispatcher.service disabled
        NetworkManager-wait-online.service disabled
        NetworkManager.service disabled
        Но при этому шлюз исправно работает, раздает интернет с двух интерфейсов и по статике и по dhcp, пробовал
        # ip addr flush dev enp6s0 - не помогло, при рестарте всеравно сбой
        вбил вручную в конфиг сетевых HWADDR мак адрес, т.к. почему то эта строка там отсутствовала, а была только UUID, интерфейсы не переименовывал, единственное что все строчки в конфигах без кавычек например BOOTPROTO=none, а у вас "none", и еще интересно нужны ли эти строки?
        DEFROUTE=yes
        PEERDNS=yes
        PEERROUTES=yes
        IPV4_FAILURE_FATAL=no
        Заранее спасибо!

        • Надо полный лог смотреть, тут строки обрезаны.

          • а где этот лог найти? если я сделал как Вы советовали /etc/rsyslog.d/ignore-systemd-session-slice.conf

          • В общем я закоментировал:
            if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop
            бутнулся и у меня пошли логи в папке /var/log/messages там уже написано:
            Активируется интерфейс enp6s0: [ OK ]
            8139too 0000:06:00.0 enp6s0: link up, 100Mbps, full-duplex, lpa 0x4
            и так все 3 сетевые в том числе и lo
            неужели вся беда в отключении логов?

            • кстати, до того как я закоментировал правило в rsyslog.d у меня папка messages была пустая, поэтому я и спрашивал откуда логи брать на сетевые интерфейсы.

            • Вы просто где-то ошиблись, когда с логами работали. Не может это правило приводить к каким-то проблемам. Я только сегодня его добавлял 2 раза на 2 новых сервера, которые настроил.

              Это правило просто выкидывает некоторые строки из потока событий, предотвращая запись этих строк в лог файл. Нарушить работу сети это никак не может.

              Но вы не первый, кто жалуется на это. Либо совпадение, либо я чего-не учел, либо не понятно написал, что делать. Не могу сообразить.

              • Я удалил правило, взял скопировал в "mcedit" со статьи "настройка сервера" и после перезагрузки вроде как все нормально, сетевая служба перезагружается, логов минимально, хотел еще спросить, вот заметил такие логи:
                Dec 6 04:01:01 localhost systemd: Created slice user-0.slice.
                Dec 6 04:01:01 localhost systemd: Starting Session 63 of user root.
                Dec 6 04:01:01 localhost systemd: Started Session 63 of user root.
                Dec 6 05:01:01 localhost systemd: Created slice user-0.slice.
                Dec 6 05:01:01 localhost systemd: Starting Session 64 of user root.
                Dec 6 05:01:01 localhost systemd: Started Session 64 of user root.
                Dec 6 06:01:01 localhost systemd: Created slice user-0.slice.
                Dec 6 06:01:01 localhost systemd: Starting Session 65 of user root.
                Dec 6 06:01:01 localhost systemd: Started Session 65 of user root.
                что они означают?

                • Можно загуглить, не помню точно. Я вот тут описывал, как их скрыть:
                  https://serveradmin.ru/centos-7-nastroyka-servera/

                  • так я оттуда и брал правило как скрыть эти логи, просто интересно что означают эти строчки, т.к. в такое раннее время никто не пользовался трафиком сервера.
                    В общем можно сделать вывод что лучше копировать в mc это правило, а не вбивать вручную, скопировать у меня получилось с помощью shift+mouse2, все таки где то наверно я допустил ошибку и сетевая служба ругалась при рестарте. так что правило работает +++
                    Спасибо за Ваш труд!

  24. Виктор

    добрый день, мне нужно сделать две сети LAN, т.е. одна сетевая получает внешний трафик, а две сетевые раздают по внутренним ip например 192.168.1.1 и 192.168.2.1, где и что нужно прописать? заранее спасибо.

  25. Виктор

    подскажите для чего отключаем selinux?

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

  26. После остановки, удаления этой службы
    # systemctl stop NetworkManager.service
    # systemctl disable NetworkManager.service
    При выполнении этой команды
    # systemctl enable network.service
    Пишет...
    network.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig network on
    И команда перезапуска службы выдает и завершается ошибкой
    статус команды показывает ошибку...
    не может запустить, нет службы NetworkManager.service
    При обратном возврате...
    # systemctl start NetworkManager.service
    перезагрузка и статус нормально

    После добавления сетевой платы и загрузки почему-то нет, не создается файл конфига этого сетевого интерфейса?

  27. Василий

    Сделал все слово в слово, не заводиться. Ситуация простая, есть сервер, eth0 - на динамике, получает интернет от провайдера, eth1 - должен раздавать адреса и интернет. помогите плз настроить, что могу делать не так?

  28. В правилах iptables стоит запрет снаружи в локалку:
    ...
    # Заурываем доступ снаружи в локалку
    $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

    # Пробрасываем порт в локалку
    $IPT -t nat -A PREROUTING -p tcp --dport 23543 -i ${WAN} -j DNAT --to 10.1.3.50:3389
    ...
    но ведь так проброс порта не будет работать. Может есть способ открыть доступ только для этого узла?
    Нечто типа $IPT -A FORWARD -i $WAN -s 10.1.3.50 -j ACCEPT ???

    • Спасибо за верное замечание. Я упоминал этот момент в своей статье про настройку iptables, https://serveradmin.ru/nastroyka-iptables-v-centos-7/#_forward А тут забыл.

      Конечно, нужно открыть доступ для конкретного узла, для которого выполняется проброс:

      $IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT

      Отредактировал скрипт.

  29. Добрый день.
    Есть сервер c двумя карточками:
    одна смотрит в internet с внешним ip XX.XX.XX.XX
    другая во внутренний сеть ip 10.10.40.10/24 gateway 10.10.40.1
    Если я удаляю шлюз 10.10.40.1 то адреса из сети видят интернет, но я, не вижу их из сети XX.XX.XX.XX

  30. Добрый день! А не подскажите, как правильно настроить шлюз с учетом разделения Интернет запросов на разных провайдеров?
    Т.е. имеется сервер с тремя сетевыми картами, 1) LAN (локальная сеть), 2) WAN1 - провайдер 1, 3) WAN2 - провайдер 2. Вопрос с одним провайдером (LAN и WAN1) работает нормально, согласно вашей статье и рекомендациям, но задача стоит так чтобы часть запросов на определенные сайты (ip адреса) уходили на WAN2 не попадая на WAN1, ну и наоборот, то что положено идти через WAN1 не должно попадать на WAN2. Как я понял, нужно правильно настроить iptables, но вот как я что то пока не разобрался, я только пытаюсь познать CentOs 7. Не подскажите как правильно настроить или где и что "копать"?

    • Это уже не тривиальная настройка, но и ничего невозможного. Копать в сторону iproute2, я настраивал недавно, вполне нормально работает. Нужно только четко понимать по каким маршрутам куда ходить. Если нет четкого понимания маршрутов, то тут уже сложнее.

      • Понимания есть, есть определенный список IP адресов веб сайтов (около 10 штук, некоторые прям по IP адресу, некоторые можно по именам, но лучше по ip адресам) котрые должны ходить именно через WAN2, а все остальные запросы через WAN1. У Вас нету такой же подробной статьи по настройке iproute2?

  31. А вот такое при запуске скрипта как лечить?
    ===============
    [root@user]# /etc/iptables.sh
    : Нет такого файла или каталогаn/bash
    /etc/iptables.sh: line 2: $'\r': команда не найдена
    /etc/iptables.sh: line 4: $'\r': команда не найдена
    /etc/iptables.sh: line 8: $'\r': команда не найдена
    /etc/iptables.sh: line 12: $'\r': команда не найдена
    /etc/iptables.sh: line 14: $'iptables\r': команда не найдена
    /etc/iptables.sh: line 15: $'iptables\r': команда не найдена
    /etc/iptables.sh: line 16: $'iptables\r': команда не найдена
    /etc/iptables.sh: line 17: $'iptables\r': команда не найдена
    /etc/iptables.sh: line 18: $'iptables\r': команда не найдена
    /etc/iptables.sh: line 19: $'iptables\r': команда не найдена
    ....

    • В скрипте ошибка, скорее всего в первой строке:

      #!/bin/bash

      • Да, было: .#!/bin/bash
        но не во всех редакторах эта точка была видна.
        И походу еще вопрос:
        Я так понимаю скрипт надо поместить в автозагрузку? что бы после перегрузки системы эти правила работали.
        Куда лучше? /etc/rc.local

        • Не обязательно. Скрипт сохраняет правила в файл:
          /sbin/iptables-save > /etc/sysconfig/iptables
          Из этого файла система сама автоматом во время загрузки подхватывает правила. Дополнительных действий не требуется.

          • не работает автозагрузка. приходится вручную запускать скрипт.

            • Где-то ошибка значит. Centos загружает правила именно из этого файла. Возможно, н включена автозагрузка самих iptables:
              systemctl enable iptables

              • systemctl enable iptables выполнено. ранее читал что selinux может быть причиной, но он disable. пробовал в rc.local вписать iptables-restore /etc/sysconfig/iptables. не помогло

  32. есть 2 физ интерфейса, 1й смотрит в интернет и получает настройки автоматом от провайдера, второй смотрит в локалку 192.168.1.1, интренет подключается по рррое соединению. Вопрос, что писать в настройка иптаблес в шапке
    # Внешний интерфейс
    export WAN= тот что в инет смотрит или рррое
    export WAN_IP= чей адрес, особенно если он динамический
    и другие настройки будут отличаться от статьи?

    • Я точно не знаю, никогда рррое не доводилось на сервере настраивать. Там новый интерфейс создается при подключении? Если да, то нужно использовать его, соответственно IP тоже его ставить.

  33. Здравствуйте, делаю все по вашей инструкции. И после /etc/iptables.sh получаю : Нет такого файла или каталога /bash
    В чем может быть проблема?

    • В самой первой строке ошибка:

      #!/bin/bash

      • Прогнал через dos2unix, помогло. Но к сожалению не дало желаемого результата. Собственно говоря интерфейс который смотрит в локальную сеть по прежнему не пингуется из других подсетей (кроме своей) IP RANGE расширил до 192.168.0.0/16
        Не подскажите какой маршрут надо добавить?

  34. Добрый день! Отличный сайт и статьи!
    А можно ли не отключать firewalld и не использовать iptables?
    Использование зон (internal,external), маскарадинг и т.п. Если есть опыт - поделитесь))

    • Конечно можно использовать firewalld. Думаю в интернете есть руководства. Я им не пользуюсь, поэтому поделиться нечем, не разбирался с ним. Но думаю там ничего сложного нет. Можно документацию посмотреть на redhat.

  35. Добрый день. Спасибо за подробную инструкцию. Очень подробно все описано.
    Подскажите мне, если сервер1 подключен к нету через прокси (сервер 0), то сможет ли сервер1 раздавать интернет другим компьютерам в его сети, после авторизации на сервере 0???

    • Что за прокси? Традиционно прокси серверы проксируют только http траффик, а это не весь интернет. Так что раздавать полноценно интернет он не сможет. А вот сможет ли он проксировать http траффик, который он получает с первого прокси, я не знаю. Ни разу не сталкивался с такой задачей. Думаю, что это реально, но надо разбираться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar