Рейтинг:0

Сервер Ubuntu как частный маршрутизатор NAT и общедоступный маршрутизатор

флаг cn

Я пытаюсь сделать то, что никогда не пробовал раньше. У меня есть Dell PowerEdge 540, на котором я установил Ubuntu. У меня установлена ​​линейка Comcast Business, и у меня следующая конфигурация физической сети:

Сервер Ubuntu 20.04.3 ЛТС

enp10s0f0: (дополнительная карта SFP+ 10 ГБ)
IPv4: 5*.2*.204.214
Подсеть: 255.255.255.252
Шлюз: 5*.2*.204.213

enp10s0f1: (дополнительная карта SFP+ 10 ГБ)
IPv4: 5*.2*.205.1
Подсеть: 255.255.255.0

eno1: (1 ГБ медного Ethernet)
IPv4: 10.0.0.0
Подсеть: 255.0.0.0

Это результат IP-адрес:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
    inet6 :: 1/128 узел области видимости
       valid_lft навсегда
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    ссылка/эфир 00:1e:c9:b5:b2:3c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 глобальная область действия eno1
       valid_lft навсегда
    inet6 ****::***:c9ff:feb5:b23c/64 ссылка на объем
       valid_lft навсегда
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    ссылка/эфир 00:1e:c9:b5:b2:3e brd ff:ff:ff:ff:ff:ff
4: enp12s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    ссылка/эфир 00:10:18:0d:a3:7e brd ff:ff:ff:ff:ff:ff
5: enp10s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    ссылка/эфир f4:e9:d4:92:9d:d0 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.204.214/30 brd 5*.2*.204.215 область глобальная enp10s0f0
       valid_lft навсегда
    ссылка на область inet6 fe80::f6e9:d4ff:fe92:9dd0/64
       valid_lft навсегда
6: enp10s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    ссылка/эфир f4:e9:d4:92:9d:d2 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.205.1/24 brd 5*.2*.205.255 глобальная область enp10s0f1
       valid_lft навсегда
    inet6 ****::****:d4ff:fe92:9dd2/64 ссылка на объем
       valid_lft навсегда

У меня настроены следующие ip-маршруты:

по умолчанию через 5*.2*.204.213 dev enp10s0f0 proto static
10.0.0.0/8 dev eno1 ссылка на область ядра proto src 10.0.0.1
5*.2*.204.212/30 dev enp10s0f0 прото-ссылка на область ядра src 5*.2*.204.214
5*.2*.205.0/24 dev enp10s0f1 прото-ссылка на область ядра src 5*.2*.205.1

И следующее сохранено в моем /etc/rc.local файл:

#!/бин/ш -е

iptables --flush
iptables --table nat --flush
iptables --удалить-цепочку
iptables --table nat --delete-chain
iptables-F
iptables -X

####################### Включить Nat ########################### ##
sudo эхо "1" > /proc/sys/net/ipv4/ip_forward

#################### Включить Nat для внутреннего ########################### #
iptables -t nat -A POSTROUTING -o enp10s0f0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o enp12s0f1 -j MASQUERADE

################### Включить журнал #########################
#iptables -A ВЫВОД -j ЖУРНАЛ
#iptables -A ВВОД -j ЖУРНАЛ
#iptables -A ВПЕРЕД -j ЖУРНАЛ

############# Разрешить по умолчанию ######################
iptables -P ВВОД ПРИНЯТЬ
iptables -P ВЫВОД ПРИНЯТЬ
iptables -P ПЕРЕДАТЬ ПРИНЯТЬ

############################ Разрешить входящие соединения #################### #########
iptables -A INPUT -m conntrack --ctstate "УСТАНОВЛЕНО, СВЯЗАННО" -j ПРИНЯТЬ

################################## Разрешить исходящие соединения ############## #########
iptables -A ВЫВОД -m conntrack --ctstate УСТАНОВЛЕНО -j ПРИНЯТЬ

######################### разрешить внутреннее внешнее
iptables -A FORWARD -i eno1 -m состояние «УСТАНОВЛЕНО, СВЯЗАННО» -j ПРИНЯТЬ
#iptables -A FORWARD -i eno1 -o enp12s0f1 -m состояние "УСТАНОВЛЕНО,СВЯЗАННО" -j ПРИНЯТЬ
###iptables -A ВПЕРЕД -i eno1 -o enp10s0f1 -j ПРИНЯТЬ
iptables -A ВПЕРЕД -i eno1 -o enp10s0f1 -j ПРИНЯТЬ
#iptables -A ВПЕРЕД -i eno1 -o enp12s0f0 -j ПРИНЯТЬ
#iptables -A ВПЕРЕД -i enp10s0f1 -o enp10s0f0 -j ПРИНЯТЬ
#iptables -A ВПЕРЕД -i enp10s0f0 -o enp12s0f1 -j ПРИНЯТЬ
выход 0

Схема сети: Сетевая диаграмма, связанная, так как я еще не могу публиковать изображения

Как вы, вероятно, заметили, я провел много времени в Интернете, читая, как лучше всего подойти к этому, и многое из этого закомментировано. Насколько я понимаю, мне нужен только NAT на эно1 интерфейс. Но так как это Linux, мне нужно iptables сделать маршрутизацию без NAT? Я попытался отключить его, и общедоступная сеть вообще не работала.

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

Nikita Kipriyanov avatar
флаг za
В чем именно проблема? Что именно ломать в "каждом случае" и как, а также что такое "дела"? Кроме того, пожалуйста, не публикуйте сценарий, который вы используете для настройки брандмауэра. Лучше опубликуйте экспорт работающего брандмауэра: `iptables-save`.
Nikita Kipriyanov avatar
флаг za
`5*.2*.205.0/24 через 5*.2*.205.1 dev enp10s0f1` — у вас действительно есть этот маршрут? Из конфигурации IP-адресов я ожидаю увидеть «5*.2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1», что совсем другое.
флаг cn
Спасибо за быстрый ответ! Проблемы, с которыми я столкнулся, приводят к тому, что либо сеть **10.0.0.0/8** становится немаршрутизируемой, либо сеть **5*.2*.205.1/24** становится немаршрутизируемой. Большой проблемой было отсутствие должного понимания маршрутизации Linux. Я изменил конфигурацию, удалив все **iptables** с помощью `iptables --flush`, а затем `ip route del 5*.2*.205.0/24` и `ip route add 5*2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1`, поскольку моя новая проблема заключается в том, что внешние общедоступные IP-адреса не могут достичь ни одного из моих «внутренних» общедоступных IP-адресов. Публичные IP-адреса теперь могут подключаться извне без **iptables**.
флаг cn
Я пробовал «0.0.0.0/1 через 50.220.205.1 dev enp10s0f1» безуспешно. Собираюсь продолжать попытки!
флаг cn
Новый **IP-маршрут** выглядит следующим образом: `по умолчанию через 5*.2*.204.213 dev enp10s0f0 proto static 10.0.0.0/8 dev eno1 ссылка на область ядра proto src 10.0.0.1 5*.2*.204.212/30 dev enp10s0f0 прото-ссылка на область ядра src 5*.2*.204.214 5*.2*.205.0/24 dev enp10s0f1 прото-ссылка на область ядра src 5*.2*.205.1 `
Nikita Kipriyanov avatar
флаг za
Вам не нужны никакие добавленные вручную маршруты. Единственные маршруты, которые вам нужны, это «интерфейсные» маршруты, добавленные в соответствии с сетевыми масками, и маршрут по умолчанию. У тебя вроде все есть. И, опять же, iptables не имеет никакого отношения к маршрутизации. Кроме того, пожалуйста, обновите вопрос с расширенной информацией, а не отвечайте в комментариях; Я скопировал туда вашу таблицу маршрутизации, остальное на ваше усмотрение. И мой ответ ниже по-прежнему актуален.
флаг cn
Спасибо за пояснение! Ты жжешь :-)
Рейтинг:1
флаг za

Я предполагаю, что ваш провайдер настроил маршруты в сеть 5*.2*.205.0/24 к вам через 5*.2*.204.214.

Предположим следующее состояние: сетевой фильтр находится в состоянии по умолчанию (iptables-сохранить не показывает никаких правил, и все политики ПРИНИМАТЬ). Ваша публичная сеть 5*.2*.205.0/24 работает, хосты имеют шлюз по умолчанию 5*.2*.205.1. Частная сеть 10.0.0.0/8 (со шлюзом 10.0.0.1) не работает, потому что NAT не настроен. Также я ожидаю, что хозяева в 10.0.0.0/8 и 5*.2*.205.0/24 чтобы иметь возможность видеть и общаться друг с другом.

Для этого вам почти ничего не нужно делать. Просто настройте все IP-адреса с сетевыми масками и включите переадресацию IP-адресов в ядре (например, сеть.ipv4.ip_forward=1). Ваша таблица маршрутизации должна быть похожа на ту, что у вас уже есть.

За 10.0.0.0/8 для работы в Интернете вам нужно всего лишь добавить следующее правило:

iptables -t nat -A POSTROUTING -o enp10s0f0 -s 10.0.0.0/8 -j MASQUERADE

Он будет выполнять NAT для «серых» адресов, уходящих в дикую природу. Вы можете заменить -j МАСКАРАД с любым из -j SNAT --к источнику 5*.2*.205.1 (адрес, который присвоен enp10s0f1) или же 5*.2*.204.214.

Если вы хотите рассмотреть сеть 5*.2*.205.0/24 как и в Интернете, вы можете добавить еще одно правило NAT и транслировать соединения, идущие в него из 10.0.0.0/8 тоже. Это другое правило будет таким же, как и первое, за исключением фильтра исходящего интерфейса. -о enp10s0f1. Но может быть полезно оставить его без NAT, особенно если вы управляете сетью и хотите, чтобы хосты в ней видели прямой 10.0.0.0/8 адреса, а не скрывать их под адресом шлюза.

Ответить или комментировать

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