Таблица IP управляет для свопинга трафика в двух интерфейсах

Проблема:

У меня есть два интерфейса, VLAN 202 и tap0. VLAN 202 является мой VLAN для клиентов VPN, и первоначально я просто раньше туннелировал все мои клиенты VPN на случайную подсеть и сделал, чтобы они совместно использовали мой IP хоста, но я хотел бы на самом деле сделать, чтобы мои клиенты туннелировали в и были выведены к VLAN клиентов VPN. Этот сервер я продолжаю работать, НЕ является основным маршрутизатором и является просто сервером со ссылкой на VLAN. Я хочу сделать это так, все клиенты вынуждены говорить с моим маршрутизатором и маршрутизатором наклона к другим VLAN при помощи моей таблицы маршрутизации серверов.

Короче говоря я хочу соединить интерфейсы мостом без любого дюйм/с на сервере на том VLAN. Я просто хочу, чтобы мои клиенты были выведены на VLAN, как будто концентратор был там. (Просто берущий все пакеты, полученные в одном интерфейсе и ставящий их другой.)


Что я попробовал:

Я все еще очень плохо знаком с Таблицами IP, но я буквально потратил 8 + часы в этой точке.

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

Моя конфигурация сервера OpenVPN:

; Connection Details
local 10.10.3.2
port 25000
;proto tcp
proto udp
dev tap0
;dev tun

; Keys & Certs
ca ca.crt
cert SP.crt
key SP.key
dh dh4096.pem
tls-auth ta.key 0

; Subnet for Clients
server-bridge 10.20.8.1 255.255.255.0 10.20.8.2 10.20.8.254
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"

keepalive 10 120

; Encryption Settings
cipher AES-256-CBC
auth SHA256

; Compression Settings
;compress lz4-v2
;push "compress lz4-v2"

max-clients 10

; Security Settings to Avoid Attacks
user nobody
group nogroup

persist-key
persist-tun

; Logging
status /var/log/openvpn/openvpn-status.log
;log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
;mute 20

Моя конфигурация таблицы IP:

# START OPENVPN RULES
# Mangle table rules
*mangle
:PREROUTING ACCEPT [0:0]
# Custom Chains
-N V202
-A V202 -i tap0 -o vlan.202 -g POSTROUTING
-N TAP
-A TAP -i vlan.202 -o tap0 -g POSTROUTING
# TAP <-> vlan.202
-A PREROUTING -i vlan.202 -g TAP
-A PREROUTING -i tap0 -g V202
COMMIT
# END OPENVPN RULES
2
задан 9 February 2020 в 19:20

2 ответа

Найденный им! Я хотел избежать мостов с помощью дюйм/с, но не обязательно образую мост. Я смог зафиксировать это использование сценария, который я загрузил и отредактировал к следующему:

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

echo "Making tunnel..."
openvpn --mktun --dev tap0

echo "Creating bridge..."
brctl addbr bridge0
brctl addif bridge0 vlan.202
brctl setageing bridge0 0

echo "Adding tap interface to bridge"
brctl addif bridge0 tap0

echo "Setting tap rules..."
ifconfig tap0 0.0.0.0 promisc up
iptables -A INPUT -i tap0 -j ACCEPT

echo "Setting bridge rules"
iptables -A INPUT -i bridge0 -j ACCEPT
iptables -A FORWARD -i bridge0 -j ACCEPT

echo "Bringing up interface as promisc"
ifconfig vlan.202 0.0.0.0 promisc up

echo "Bringing up bridge"
ifconfig bridge0 up

Это эффективно делает мост, который ведет себя как концентратор.

0
ответ дан 20 February 2020 в 23:01

Я могу быть неправым, но кажется будто Вы пытаетесь локально направить трафик удаленных клиентов VPN друг среди друга и других хостов на VLAN.

Если так, затем потому что Вы пытаетесь направить трафик, маршрутизация должна быть включена. Так, если это не было уже сделано, редактирование/etc/sysctl.conf и добавляет или не комментирует следующую строку:

net.ipv4.ip_forward=1

Затем или перезагрузка или выполненный:

sudo sysctl -p

Во-вторых, ВХОДНЫЕ И ВЫХОДНЫЕ цепочки только для пакетов, предназначенных для локального процесса или сокета (значение хоста), а не для пакетов, предназначенных для другой системы. Для последнего используйте ВПЕРЕД цепочка. Кроме того, таблица фильтра вероятна лучшее местоположение, чем искажение.

В-третьих,-j может быть лучше, чем-g для Вашего случая.

Я не протестировал это и не могу разумно прокомментировать, могла ли реализация интерфейса TUN быть лучшим подходом, но к передачам пакетов от касания до VLAN 202 я мог бы предложить:

iptables -A FORWARD -i tap -o vlan.202 -j ACCEPT

Пойти другим путем:

iptables -A FORWARD -i vlan.202 -o tap -j ACCEPT

Направить пакеты среди систем на VLAN (если не иначе выполненный):

iptables -A FORWARD -i vlan.202 -o vlan.202 -j ACCEPT

Направить пакеты среди систем на касании (снова, если не иначе выполненный):

iptables -A FORWARD -i tap -o tap -j ACCEPT

Можно совершенствовать эти правила с разбивкой по источникам, место назначения, протокол и порт, конечно.

Кроме того, эти правила не сохранятся через перезагрузку, таким образом, необходимо будет использовать, iptables-сохраняют и iptables-восстанавливают в сценариях запуска или включают вышеупомянутое iptables команды в сценарии, который работает при запуске. Пример systemd .service файл, который называет сценарий (названным iptables-rules.sh) при запуске:

# /etc/systemd/system/iptables-rules.service

[Unit]
Description=Run iptables rules at startup
Before=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c /etc/my-scripts/iptables-rules.sh

[Install]
WantedBy=multi-user.target

Другое исходное покрытие, как записать и сохранить сценарий (синтаксис легок; обязательно установите файл как исполняемый файл с помощью chmod), и как включить .service.

Удача и HTH.

0
ответ дан 20 February 2020 в 23:01

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

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