LINUX.ORG.RU

История изменений

Исправление glorsh66, (текущая версия) :

Длиннопост может даже новую тему создать.

В итоге комп оказался с убунту 22 desktop. А на нем дефолтный NetworkManager. Понятно что можно в netplan переключить. Но я ради интереса решил поразбираться в ncli

Вводные - 2 сетевых интерфейса. Оба с интернетом. Один с «реальным IP» второй с локальной домашней сетью. Я хочу сделать так что бы весь обычный трафик шел через обычный интернет. А через реальный IP был port forwarding на внутренний веб сервер.

enp3s0 - обычный локальный интернет. 192.168.0.0/24 GW - 192.168.0.8 (да кривой адрес роутера) «Wired connection 1»

enp5s0 - Реальный IP 199.199.199.231, - GW 199.199.199.225 «Wired connection 2» с (посколькую это реальный IP я его заменил)

wg0 - вайгард.

Сделал следующие настройки (может кому будет полезен пример на NetworkManager)

#Делаем приоритет ниже, чтоб обынчый интернет был приоритетнее чем внешний
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 100
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"

sudo nmcli connection modify "Wired connection 2" \
ipv4.method manual \
ipv4.addresses 199.199.199.231/27 \
ipv4.gateway 199.199.199.225 \
ipv4.dns "8.8.8.8 8.8.4.4"

echo "200 custom_table" | sudo tee -a /etc/iproute2/rt_tables #Почему то сразу не хотела видеться. 
ip route add default via 199.199.199.225 table 200   #Без нее почему то не работает 
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 table=200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routing-rules "priority 100 from 199.199.199.231/27 table 200"
sudo nmcli connection modify "Wired connection 2" ipv4.route-metric 200
sudo nmcli connection down "Wired connection 2" && sudo nmcli connection up "Wired connection 2"

Все прекрасно работает как я и хотел. Весь исходящий трафик идет через enp3s0. А входящие соединения идут на enp5s0 с реальным IP.

Но вот вопрос я хочу сделать 443 port forwarding в локальную сеть. на 192.168.0.2:443

Делаю условно так:


sudo iptables -t nat -A OUTPUT -p tcp -d 199.199.199.231 --dport 443 -j DNAT --to-destination 192.168.0.2:443
sudo iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 443 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

(все дефолтные политики accept для упрощения тестирования)

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

А именно получается при Port forwarding не приходит обратный пакет с enp3s0

Что можете подсказать? Я уже задолбал вопросами Claude 3.5 Sonnet (кстати всем рекомендую, щас самая топовая нейронка).

У меня предоложения что нужно сделать две кастомные таблицы роутинга.

И как то прописать чтоб enp3s0 и enp5s0 ссылались друг на друга.

Второе что что то мутить с маркирование пакетов. Но как это будет с обратными пакетами работать?

Исправление glorsh66, :

Длиннопост может даже новую тему создать.

В итоге комп оказался с убунту 22 desktop. А на нем дефолтный NetworkManager. Понятно что можно в netplan переключить. Но я ради интереса решил поразбираться в ncli

Вводные - 2 сетевых интерфейса. Оба с интернетом. Один с «реальным IP» второй с локальной домашней сетью. Я хочу сделать так что бы весь обычный трафик шел через обычный интернет. А через реальный IP был port forwarding на внутренний веб сервер.

enp3s0 - обычный локальный интернет. 192.168.0.0/24 GW - 192.168.0.8 (да кривой адрес роутера) «Wired connection 1»

enp5s0 - Реальный IP 199.199.199.231, - GW 199.199.199.225 «Wired connection 2» с (посколькую это реальный IP я его заменил)

wg0 - вайгард.

Сделал следующие настройки (может кому будет полезен пример на NetworkManager)

#Делаем приоритет ниже, чтоб обынчый интернет был приоритетнее чем внешний
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 100
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"

sudo nmcli connection modify "Wired connection 2" \
ipv4.method manual \
ipv4.addresses 199.199.199.231/27 \
ipv4.gateway 199.199.199.225 \
ipv4.dns "8.8.8.8 8.8.4.4"

echo "200 custom_table" | sudo tee -a /etc/iproute2/rt_tables #Почему то сразу не хотела видеться. 
ip route add default via 199.199.199.225 table 200   #Без нее почему то не работает 
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 table=200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routing-rules "priority 100 from 199.199.199.231/27 table 200"
sudo nmcli connection modify "Wired connection 2" ipv4.route-metric 200
sudo nmcli connection down "Wired connection 2" && sudo nmcli connection up "Wired connection 2"

Все прекрасно работает как я и хотел. Весь исходящий трафик идет через enp3s0. А входящие соединения идут на enp5s0 с реальным IP.

Но вот вопрос я хочу сделать 443 port forwarding в локальную сеть. на 192.168.0.98:443

Делаю условно так:


sudo iptables -t nat -A OUTPUT -p tcp -d 199.199.199.231 --dport 443 -j DNAT --to-destination 192.168.0.2:443
sudo iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 443 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

(все дефолтные политики accept для упрощения тестирования)

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

А именно получается при Port forwarding не приходит обратный пакет с enp3s0

Что можете подсказать? Я уже задолбал вопросами Claude 3.5 Sonnet (кстати всем рекомендую, щас самая топовая нейронка).

У меня предоложения что нужно сделать две кастомные таблицы роутинга.

И как то прописать чтоб enp3s0 и enp5s0 ссылались друг на друга.

Второе что что то мутить с маркирование пакетов. Но как это будет с обратными пакетами работать?

Исходная версия glorsh66, :

Длиннопост может даже новую тему создать.

В итоге комп оказался с убунту 22 desktop. А на нем дефолтный NetworkManager. Понятно что можно в netplan переключить. Но я ради интереса решил поразбираться в ncli

Вводные - 2 сетевых интерфейса. Оба с интернетом. Один с «реальным IP» второй с локальной домашней сетью. Я хочу сделать так что бы весь обычный трафик шел через обычный интернет. А через реальный IP был port forwarding на внутренний веб сервер.

enp3s0 - обычный локальный интернет. 192.168.0.0/24 GW - 192.168.0.8 (да кривой адрес роутера) «Wired connection 1»

enp5s0 - Реальный IP 199.199.199.231, - GW 199.199.199.225 «Wired connection 1» с (посколькую это реальный IP я его заменил)

wg0 - вайгард.

Сделал следующие настройки (может кому будет полезен пример на NetworkManager)

#Делаем приоритет ниже, чтоб обынчый интернет был приоритетнее чем внешний
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 100
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"

sudo nmcli connection modify "Wired connection 2" \
ipv4.method manual \
ipv4.addresses 199.199.199.231/27 \
ipv4.gateway 199.199.199.225 \
ipv4.dns "8.8.8.8 8.8.4.4"

echo "200 custom_table" | sudo tee -a /etc/iproute2/rt_tables #Почему то сразу не хотела видеться. 
ip route add default via 199.199.199.225 table 200   #Без нее почему то не работает 
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routes "0.0.0.0/0 199.199.199.225 table=200"
sudo nmcli connection modify "Wired connection 2" +ipv4.routing-rules "priority 100 from 199.199.199.231/27 table 200"
sudo nmcli connection modify "Wired connection 2" ipv4.route-metric 200
sudo nmcli connection down "Wired connection 2" && sudo nmcli connection up "Wired connection 2"

Все прекрасно работает как я и хотел. Весь исходящий трафик идет через enp3s0. А входящие соединения идут на enp5s0 с реальным IP.

Но вот вопрос я хочу сделать 443 port forwarding в локальную сеть. на 192.168.0.98:443

Делаю условно так:


sudo iptables -t nat -A OUTPUT -p tcp -d 199.199.199.231 --dport 443 -j DNAT --to-destination 192.168.0.2:443
sudo iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 443 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

(все дефолтные политики accept для упрощения тестирования)

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

А именно получается при Port forwarding не приходит обратный пакет с enp3s0

Что можете подсказать? Я уже задолбал вопросами Claude 3.5 Sonnet (кстати всем рекомендую, щас самая топовая нейронка).

У меня предоложения что нужно сделать две кастомные таблицы роутинга.

И как то прописать чтоб enp3s0 и enp5s0 ссылались друг на друга.

Второе что что то мутить с маркирование пакетов. Но как это будет с обратными пакетами работать?