Поскольку мой хостер не допускает дополнительных настроек, мне пришлось использовать решение NAT, чтобы запустить мою виртуальную машину CentOS на дополнительном IP-адресе и мою хост-машину на основном IP.
Теперь у меня проблема, так как для портов 22, 80 и 443 это работает должным образом. Я достигаю своего SSH / Apache под CentOS. Но я также запускаю экземпляр DB2 на порте 50000, а этого я не могу достичь. В соединении каждый раз отказывалось.
Однако я могу получить доступ к порту с хост-машины, используя внутренний IP-адрес 192.168.56.2, поэтому нет брандмауэра, блокирующего мой запрос в гостевой системе.
Это установка:
Хост-компьютер Ubuntu 12.04:
ifconfig -a
eth0 Link encap:Ethernet HWaddr censored
inet addr:85.25.PRIMARY.IP Bcast:85.25.NETWORK.SEGMENT Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:1 Link encap:Ethernet HWaddr censored
inet addr:85.25.SECONDARY.IP Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -d 85.25.SECONDARY.IP/32 -i eth0 -j DNAT --to-destination 192.168.56.2
-A PREROUTING -d 85.25.SECONDARY.IP/32 -i eth0 -j DNAT --to-destination 192.168.56.2
-A POSTROUTING -s 192.168.56.2/32 -o eth0 -j SNAT --to-source 85.25.SECONDARY.IP
-A POSTROUTING -s 192.168.56.2/32 -o eth0 -j SNAT --to-source 85.25.SECONDARY.IP
На гостевой машине (CentOS 6.6):
ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:27:D6:D5:4B
inet addr:192.168.56.2 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:1 Link encap:Ethernet HWaddr 08:00:27:D6:D5:4B
inet addr:85.25.SECONDARY.IP Bcast:85.25.SECONDARY.IP Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
iptables -t nat -S
-P PREROUTING ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
Любые идеи?
// редактировать: IP-переадресация конечно включена (net.ipv4.ip_forward=1
)
Решено. Это не имело ничего общего с моей (правильной) конфигурацией, но с прокси, который я использую для подключения к нестандартным портам. Оказывается, если вы уже находитесь в системе (через прокси), вам нужно открыть соединение непосредственно с виртуальным IP-адресом, потому что правила предварительной маршрутизации не применяются, и ваш запрос не будет перенаправлен автоматически.