LINUX.ORG.RU
ФорумAdmin

Проброс порта между сетевыми картами в Fedora 31

 , , , ,


0

1

Доброго времени суток. Случилась неприятность. В другом городе, куда сейчас нет возможности попасть имеется роутер, к нему подключены устройства и на них настроен проброс портов. Все было хорошо, но на одном из устройств был остановлен сетевой интерфейс, который с роутером и соединет. К сожалению или к счастью у этого проблемного хоста есть два сетевых интерфейса и второй интерфейс подрублен к хосту с двумя интерфейсами под управлением Fedora 31 и там оба интерфейса подняты. Но... у проблемного хоста винда и максимум что могу сделать это прокинуть через fedora порт, чтобы при обращении на fedora на порт 3389 мы попадали на эту вин машину.

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 94:de:80:ae:9d:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::96de:80ff:feae:9d78/64 scope link
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 94:de:80:ae:9d:7a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.35/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0
       valid_lft 13978sec preferred_lft 13978sec
    inet6 fe80::96de:80ff:feae:9d7a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Это что за интерфейсы на fedora enp2s0 (192.168.1.35) - подключен к роутеру enp1s0 (192.168.0.102) - подключен к проблеммному хосту 192.168.0.101, куда ти надо попадать на порт 3389 обращаясь к 192.168.1.35:3389

Ранее проброс настраивал на OpenSUSE, но тут что-то идет не так. Вот что делаю:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -i enp2s0 -o enp1s0 -p tcp --syn --dport 3389 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -i enp2s0 -o enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i enp1s0 -o enp2s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.101:3389
sudo iptables -t nat -A POSTROUTING -o enp1s0 -p tcp --dport 3389 -d 192.168.0.101 -j SNAT --to-source 192.168.1.35

Изначально

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
LIBVIRT_INP  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
LIBVIRT_FWX  all  --  anywhere             anywhere
LIBVIRT_FWI  all  --  anywhere             anywhere
LIBVIRT_FWO  all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ms-wbt-server flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
LIBVIRT_OUT  all  --  anywhere             anywhere

Chain LIBVIRT_FWI (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain LIBVIRT_FWO (1 references)
target     prot opt source               destination
ACCEPT     all  --  192.168.122.0/24     anywhere
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain LIBVIRT_FWX (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain LIBVIRT_INP (1 references)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

Chain LIBVIRT_OUT (1 references)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc

Помогите пожалуйста разобраться, не получается, пробовал разные варианты FORWARD PREROUTING POSTROUTING, но не пускает

Забудьте про ″iptables -L″, только ″iptables -L -n -v -x". Тогда бы вы при выводе увидели, что у ваших правил нулевые счётчики, то есть до них не доходят пакеты и, может быть, задумались бы. И может быть подумали про ″iptables -I″.

mky ★★★★★ ()
Ответ на: комментарий от anc
[root@makpol ~]#  echo 1 > /proc/sys/net/ipv4/ip_forward
[root@makpol ~]#  iptables -A FORWARD -i enp2s0 -o enp1s0 -p tcp --syn --dport 3389 -m conntrack --ctstate NEW -j ACCEPT
 iptables -A FORWARD -i enp2s0 -o enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -A FORWARD -i enp1s0 -o enp2s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -P FORWARD DROP
 iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.101:3389
[root@makpol ~]#  iptables -A FORWARD -i enp2s0 -o enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
[root@makpol ~]#  iptables -A FORWARD -i enp1s0 -o enp2s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
[root@makpol ~]#  iptables -P FORWARD DROP
[root@makpol ~]#  iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.101:3389
[root@makpol ~]#  iptables -t nat -A POSTROUTING -o enp1s0 -p tcp --dport 3389 -d 192.168.0.101 -j MASQUERADE
[root@makpol ~]#
[root@makpol ~]#  iptables-save
# Generated by iptables-save v1.8.3 on Thu Aug 20 08:11:19 2020
*mangle
:PREROUTING ACCEPT [633:56041]
:INPUT ACCEPT [502:49061]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [362:65668]
:POSTROUTING ACCEPT [362:65668]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Thu Aug 20 08:11:19 2020
# Generated by iptables-save v1.8.3 on Thu Aug 20 08:11:19 2020
*nat
:PREROUTING ACCEPT [7:575]
:INPUT ACCEPT [3:375]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:LIBVIRT_PRT - [0:0]
-A PREROUTING -i enp2s0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.101:3389
-A POSTROUTING -j LIBVIRT_PRT
-A POSTROUTING -d 192.168.0.101/32 -o enp1s0 -p tcp -m tcp --dport 3389 -j MASQUERADE
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Thu Aug 20 08:11:19 2020
# Generated by iptables-save v1.8.3 on Thu Aug 20 08:11:19 2020
*filter
:INPUT ACCEPT [21:1419]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [19:3832]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
-A INPUT -j LIBVIRT_INP
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A FORWARD -i enp2s0 -o enp1s0 -p tcp -m tcp --dport 3389 --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp2s0 -o enp1s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp1s0 -o enp2s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j LIBVIRT_OUT
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
COMMIT
# Completed on Thu Aug 20 08:11:19 2020
MakPol ()
Ответ на: комментарий от anc

Как понял проблема была именно с -j SNAT --to-source 192.168.1.35

Т.к. то что ниже проблему решило

 echo 1 > /proc/sys/net/ipv4/ip_forward
 iptables -A FORWARD -i enp2s0 -o enp1s0 -p tcp --syn --dport 3389 -m conntrack --ctstate NEW -j ACCEPT
 iptables -A FORWARD -i enp2s0 -o enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -A FORWARD -i enp1s0 -o enp2s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -P FORWARD DROP
 iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.101:3389
 iptables -t nat -A POSTROUTING -o enp1s0 -p tcp --dport 3389 -d 192.168.0.101 -j MASQUERADE

Пропустил очень много со времен когда настраивал 8 лет назад или около того...придется наверстывать, например по conntrack что-то пока как мартышка перепечатал :(

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

MakPol ()
Ответ на: комментарий от MakPol

MASQ я написал что бы сильно не заморачиваться для вашего решения. На самом деле в вашем «варианте» разницы между snat и masq быть не должно. Но Вы ошиблись в одном.

-o enp1s0 -p tcp --dport 3389 -d 192.168.0.101 -j SNAT --to-source 192.168.1.35

Пакеты отправленные с интерфейса enp1s0 на котором сеть 192.168.0.0/24 подменяете source IP на 192.168.1.35, а в сети 192.168.0.0/24 кто-то знает как вернуть пакет на 192.168.1.35? Вот поэтому и не заработало :) MASQ просто подменило на 192.168.0.102. Выбран «первый» (это важный вопрос) с интерфейса, согласно main таблицы роутинга (тоже важный момент). Если бы у вас был policy based routing (PBR) тут другой вопрос возник бы, но это не про вашу ситуацию :)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.