Переадресация порта NAT не работает, а туннель ssh не работает - PullRequest
0 голосов
/ 06 октября 2018

У меня есть установка apache2 контейнера LXC (контейнер прослушивает 192.168.122.179:80).

Хост 10.138.141.216.

Если я туннелирую через ssh: ssh -L 45678: 192.168.122.179: 80 myuser@10.138.141.216 с моего компьютера я получаю страницу apache2 (браузер на http://localhost:45678)

НО, если я отключаю туннель ssh и использую только iptables http://10.138.141.216:45678 won 't работа:

[~]$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    9   564 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:45678 to:192.168.122.179:80

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       192.168.122.0/24     224.0.0.0/24
    2   656 RETURN     all  --  *      *       192.168.122.0/24     255.255.255.255
  606 36360 MASQUERADE  tcp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  udp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
  725  101K MASQUERADE  all  --  *      *       192.168.122.0/24    !192.168.122.0/24

Я могу видеть, как меняются номера pkts и байтов всякий раз, когда я обновляю страницу в браузере, но все, что я получаю, это "Этот сайт недоступен".

Так что туннель ssh работает, а правило iptables не работает ...

ОБНОВЛЕНИЕ:

с помощью tcpdump я вижу "tcp port eba unreachable", почему ???

14:46:40.672318 IP 10.79.41.37.57504 > mymachine.eba: Flags [S], seq 2646922897, win 8192, options [mss 1360,nop,wscale 8,nop,nop,sackOK,unknown-33 0x21cc167ee1203a070000], length 0
14:46:40.672402 IP mymachine > 10.79.41.37: ICMP mymachine tcp port eba unreachable, length 72

wget http://192.168.122.179 работает изнутри хоста ...

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Я не знаю почему, но LXC по умолчанию добавляет эти правила:

REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Они не были видны при использовании

iptables -t любой -L-n -v

Удаление "-t any" показало их.Удаление этих правил сделало свое дело.

0 голосов
/ 06 октября 2018

Apache обычно настраивается хостами.Каждый хост прослушивает запросы от определенных доменных имен.

Чтобы ваш хост был доступен, вам нужно прослушать сам IP-адрес, или выбрать имя хоста, или задать хост по умолчанию в конфигурации хостов Apache.

Вы можете проверить, работает ли конфигурация вашего хоста, используя wget или curl для выполнения запроса get на localhost.

Если Apache работает, убедитесь, что нет никаких конфликтующих правил iptables.

...