Я хочу сделать простое перенаправление порта моего ноутбука на порт виртуальной машины (также в моем ноутбуке).
iptables -I INPUT -p tcp --dport 2424 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 2424 -j DNAT --to-destination 192.168.10.10:8000
На другой машине в сети ..
$ nmap 192.168.101.199
Starting Nmap 6.40 ( http://nmap.org ) at 2015-07-08 18:52 BRT
Nmap scan report for 192.168.101.199
Host is up (0.0027s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
8000/tcp open http-alt
Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds
Телнет на порту 2424 ноутбука тоже не работает.
Что-то не так в моем коде?
Я не знаю, насколько сильно Nmap сканирует по умолчанию. Попробуйте использовать переключатель -p специально для сканирования 2424. Если я припоминаю, по умолчанию Nmap сканирует только 1-1024 и некоторые более высокие службы. Nmap потенциально может сканировать 65535 портов, поэтому сканирование всех по умолчанию будет чертовски трудоемким делом.
РЕДАКТИРОВАТЬ: я проверил документацию, и я прав в том, что она сканирует 1-1024 и выше.
Может я ошибся в своем вопросе .. Моя ситуация была немного другой.
В моем случае у меня в сети есть ноутбук, а внутри этого парня - виртуальная машина.
Но .. Эта виртуальная машина выходит в интернет через нат (с помощью витального бокса). Тогда другие компьютеры в моей сети не смогут получить доступ к этой виртуальной машине.
Диапазон моей сети: 192.168.0 - Диапазон VM: 192.168.10
Что я хотел? Включите доступ к службе в виртуальной машине для всех компьютеров в моей сети, но через порт в моем ноутбуке.
Немного изучив, я нашел свою ошибку ... Когда я просто перенаправляю порт 2424 моего ноутбука на порт 8000 виртуальной машины, он «работает». Но дело было в том, что моей виртуальной машине нужен ответ сети. Как ВМ что-то вернет, если это не в моей сети?
Итак .. Помимо открытия порта и выполнения пересылки, мне нужно замаскировать ответ виртуальной машины в моем ноутбуке.
Все, что поступает на порт 2424 моего ноутбука, поступает на порт 8000 виртуальной машины. Но когда виртуальная машина что-то возвращает, мне нужно сказать машине запроса, что отвечает мой ноутбук. :)
После большого количества бла-бла-бла .. Следуйте правилам:
iptables -I INPUT -p tcp --dport 2424 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2424 -j DNAT --to 192.168.10.10:8000
iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.10 --dport 8000 -j MASQUERADE
Спасибо вам всем!