Как перенаправить/передать порт локально

Я хочу к порту передачи 500 портировать 2500 в том же хосте, и следующее работало над Lubuntu 16.04, но после перезагрузки и повторного выполнения iptables команды, я не могу заставить это работать:

iptables -t nat -A PREROUTING -p udp -d 192.168.1.10 –dport 500 -j DNAT –to-destination 192.168.1.10:2500
iptables -A FORWARD -p udp -d 192.168.1.10 –dport 2500 -j ACCEPT

где 192.168.1.10 IP моего локального хоста.
Для тестирования на одной сессии, я выполняю netcat:

nc -u 192.168.1.10:500

и на 2-й выполненной сессии:

nc -l -u 500

и на 3-й выполненной сессии:

nc -l -u 2500

Таким образом, я хочу данные, я вхожу в сессию 1, чтобы быть полученным на сессии 3, не сессии 2, который я имел работой, но не могу получить ее работающий снова.

Я также попробовал:

iptables -t nat -A PREROUTING -p udp --dport 500 -j REDIRECT --to-port 2500

но пакеты все еще получаются на порте 500, не 2500.

ufw отключен и удостоверяться, что iptables работает, я попробовал:

iptables -A INPUT -p udp --dport 500 -j DROP

и затем пакеты не были получены на порте 500 или 2500 как ожидалось. Перенаправление портов включено:

# cat /proc/sys/net/ipv4/ip_forward
1

Вывод сессии ниже:

root@mike-TravelMate-8371:~/nat/out# iptables -t nat -S;iptables  -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -d 192.168.1.10/32 -p udp -m udp --dport 500 -j DNAT --to-destination 192.168.1.10:2500
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -d 192.168.1.10/32 -p udp -m udp --dport 2500 -j ACCEPT
root@mike-TravelMate-8371:~/nat/out# nohup nc -l -u 2500 > nc_2500.out &
[1] 29806
root@mike-TravelMate-8371:~/nat/out# nohup: ignoring input and redirecting stderr to stdout

root@mike-TravelMate-8371:~/nat/out# nohup nc -l -u 500 > nc_500.out &
[2] 29810
root@mike-TravelMate-8371:~/nat/out# nohup: ignoring input and redirecting stderr to stdout

root@mike-TravelMate-8371:~/nat/out# jobs
[1]-  Running                 nohup nc -l -u 2500 > nc_2500.out &
[2]+  Running                 nohup nc -l -u 500 > nc_500.out &
root@mike-TravelMate-8371:~/nat/out# nc -u 192.168.1.10 500
test forwarding UDP port 500 to 2500
^C
[2]+  Done                    nohup nc -l -u 500 > nc_500.out
root@mike-TravelMate-8371:~/nat/out# head nc*.out
==> nc_2500.out <==

==> nc_500.out <==
test forwarding UDP port 500 to 2500
root@mike-TravelMate-8371:~/nat/out# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 00:1e:33:24:98:86 brd ff:ff:ff:ff:ff:ff
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:22:fb:64:bd:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic wlp1s0
       valid_lft 85651sec preferred_lft 85651sec
    inet6 fd58:7f66:569d:5300:c5df:415:6c56:50d6/64 scope global temporary dynamic 
       valid_lft 6788sec preferred_lft 3188sec
    inet6 fd58:7f66:569d:5300:75d:bbe9:652e:6587/64 scope global mngtmpaddr noprefixroute dynamic 
       valid_lft 6788sec preferred_lft 3188sec
    inet6 fe80::e214:14f8:d95c:73a7/64 scope link 
       valid_lft forever preferred_lft forever
4: vboxnet0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.1/24 brd 192.168.56.255 scope global vboxnet0
       valid_lft forever preferred_lft forever
    inet6 fe80::800:27ff:fe00:0/64 scope link 
       valid_lft forever preferred_lft forever
root@mike-TravelMate-8371:~/nat/out# ip route
default via 192.168.1.1 dev wlp1s0  proto static  metric 600 
192.168.1.0/24 dev wlp1s0  proto kernel  scope link  src 192.168.1.10  metric 600 
192.168.56.0/24 dev vboxnet0  proto kernel  scope link  src 192.168.56.1 linkdown 

Причина, которую я хочу к портам передачи, состоит в том, что я хочу установить VPN между внешним сервером и гостем, работающим в поле Virtual. Гость Vbox использует сеть "NAT", таким образом, Vbox имеет свое собственное перенаправление портов к портам передачи к VM, который имеет IP 10.0.2.15 так в Vbox, который правила перенаправления портов:

  1. Хост TCP 2222 гостю Vbox 22
  2. Хост UDP 4500 гостю Vbox 4500
  3. Хост UDP 2500 гостю Vbox 500

Первые средства я могу ssh гостю, использующему "ssh-p 2222 root@192.168.1.10"

Вторые средства, которые я могу отправить пакетам UDP на 4 500, таким образом, я могу отправить пакеты с помощью "nc-u 192.168.1.10 4500" от хоста и я вижу, что они получены на госте Vbox, использующем "nc-l-u 4500" (пакеты НЕ замечены при выполнении "nc-l-u 4500" на хосте),

Третье - то, потому что Vbox НЕ передаст зарезервированные порты под 1 024, таким образом, я не буду мочь порт передачи 500, таким образом, с этим правилом я могу использовать "nc-u 192.168.1.10 2500" на хосте и получить пакеты UDP на госте Vbox, использующем "nc-l-u 500".

Таким образом, я хочу к портам передачи на UDP 500 на хосте порта 2500, таким образом, они передаются Vbox для портирования 500 на госте, и это работало, но после перезагрузки и повторного выполнения iptables управляет, чтобы он не работал и после нескольких часов, работая над этим, я не могу выяснить то, что я сделал по-другому.

Я попытался настроить iptables (и Vbox) с TCP forwadring, и это не работает ни один, и я попробовал ufw, и я попытался передать локальные порты с и без выполнения Vbox, и порты никогда не передаются.

Я также попробовал порт пересылки к несуществующему IP:

iptables -t nat -A PREROUTING -p udp -d 192.168.1.10 --dport 500 -j DNAT --to-destination 192.168.1.30:500
iptables -A FORWARD -p udp -d 192.168.1.30 --dport 500 -j ACCEPT

Таким образом, здесь IP 192.168.1.30 не существует, но если я работаю "nc-u 192.168.1.10 500", на одной сессии затем я могу все еще получить пакеты, слушающие на хосте (IP 192.168.1.10).

Я попытался передать порт TCP 3222 для портирования 22 таким образом, я могу протестировать без netcat, но это не работает

root@mike-TravelMate-8371:~/nat# iptables -t nat -S;iptables  -S 
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -d 192.168.1.10/32 -p tcp -m tcp --dport 3222 -j DNAT --to-destination 192.168.1.10:22
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -d 192.168.1.10/32 -p tcp -m tcp --dport 22 -j ACCEPT
root@mike-TravelMate-8371:~/nat# telnet 192.168.1.10 22
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
^C
Connection closed by foreign host.
root@mike-TravelMate-8371:~/nat# telnet 192.168.1.10 3222
Trying 192.168.1.10...
telnet: Unable to connect to remote host: Connection refused
root@mike-TravelMate-8371:~/nat# 

Таким образом, здесь я могу достигнуть ssh порта непосредственно с помощью порта 22, но я не могу через 3 222 настолько передающий, не работает.

1
задан 6 June 2018 в 12:12

1 ответ

Правила Iptables не являются персистентными через перезагрузку. Вам, возможно, придется добавить правила назад после того, как перезагрузка или использование iptables-сохраняют / iptables-персистентный. Обратитесь к этой ссылке. Как я могу сделать определенный набор правил iptables постоянным?

0
ответ дан 8 December 2019 в 00:45

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

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