Ubuntu 18.04 в качестве роутера

Ubuntu 18.04. Мне дали требование использовать Ubuntu в качестве простого маршрутизатора.

Ubuntu box имеет 2 интерфейса - ens33 DHCP, ens38 192.168.10.1/24. 33 снаружи, 38 внутри для моих целей. За этим блоком находится пара сетей - 192.168.10.x и 192.168.20.x. Из любой из этих сетей я могу пропинговать оба интерфейса на коробке ubuntu. Я не могу прогнать внешний интерфейс (33).

Я отредактировал /etc/sysctl.conf, чтобы разрешить пересылку ipv4 - net.ipv4.ip_forward = 1.

Я добавил маршрут для отображения шлюза в другую сеть 192.168.20.x через 38.

Не смотря на нат, просто маршрут.

Кто-нибудь видит, чего мне не хватает? Дайте мне знать, если потребуется дополнительная информация.

Дуга

4
задан 29 June 2018 в 22:34

1 ответ

1114 Хотел опубликовать ответ, который искал, на случай, если кому-то еще понадобится такой же сценарий. AlexP указал мне правильное направление выше - внешние поля не знали, как ответить, и я не хотел добавлять маршруты в каждую сеть, которая может использовать это.

Я хотел маршрутизацию, но мне также был нужен NAT.

Эти инструкции были собраны вместе из нескольких разных источников, но в первую очередь - https://help.ubuntu.com/lts/serverguide/firewall.html < - раздел UFW IP Maquerading здесь ,

Инструкции CentOS отсюда- https://ronnybull.com/2015/11/20/how-to-centos-7-router/ .

Я предполагаю, что внутренний и внешний интерфейс на коробке Ubuntu и настройки для них уже были настроены. (Также добавлены инструкции в самом низу, чтобы выполнить то же самое с CentOS 7 - это тоже было моим требованием)

1 . во-первых, включите ведение журнала ufw и ufw

sudo ufw enable
sudo ufw logging on

2 . Сбросьте все существующие правила (НЕ делайте этого, если вы уже используете таблицы ufw или IP для межсетевого экрана). Удалить и очистить. По умолчанию таблица «фильтр». Другие, такие как "nat", должны быть явно указаны.

iptables --flush            # Flush all the rules in filter and nat tables    
iptables --table nat --flush    
iptables --delete-chain    # Delete all chains that are not in default filter and nat table    
iptables --table nat --delete-chain    

3 . Во-первых, в ufw должна быть включена пересылка пакетов. Необходимо настроить два файла конфигурации, в / etc / default / ufw измените DEFAULT_FORWARD_POLICY на «ACCEPT»:

DEFAULT_FORWARD_POLICY="ACCEPT"

4 . Затем отредактируйте /etc/ufw/sysctl.conf и раскомментируйте:

net/ipv4/ip_forward=1
net/ipv4/conf/all/forwarding=1 
net/ipv6/conf/default/forwarding=1 # if using IPv6

5 . Теперь добавьте правила в файл /etc/ufw/before.rules. Правила по умолчанию настраивают только таблицу фильтров, и для включения маскировки таблицы nat необходимо будет настроить. Добавьте следующее в верхнюю часть файла сразу после заголовка комментария:

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

Для каждой таблицы требуется соответствующий оператор COMMIT. В этих примерах показаны только таблицы nat и filter, но вы также можете добавить правила для таблиц raw и mangle. В приведенном выше примере замените eth0, eth1 и 192.168.0.0/24 на соответствующие интерфейсы и диапазон IP для вашей сети.

6 . Наконец, отключите и снова включите ufw, чтобы применить изменения:

sudo ufw disable && sudo ufw enable

IP Masquerading теперь должен быть включен. Вы также можете добавить любые дополнительные правила FORWARD в /etc/ufw/before.rules. Рекомендуется добавить эти дополнительные правила в цепочку ufw-before-forward.

Конфигурация CentOS 7 firewalld для выполнения того же действия -

1. Включите пересылку пакетов IPv4.

[Тысяча сто двадцать девять] а. Добавьте следующее в /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. Примените настройки sysctl:

sysctl -p

2. Добавить прямые правила для firewalld. Добавьте параметр --permanent, чтобы сохранить эти правила при перезапуске.

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT

а. Добавьте следующее в /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. Примените настройки sysctl:

sysctl -p

2. Добавить прямые правила для firewalld. Добавьте параметр --permanent, чтобы сохранить эти правила при перезапуске.

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT
8
ответ дан 29 June 2018 в 22:34

Другие вопросы по тегам:

Похожие вопросы: