У меня есть выделенный сервер с одним общедоступным IP-адресом (скажем, 1.2.3.4) под управлением CentOS. С помощью virt-manager я добавил виртуальную машину под управлением CentOS.
Они связаны через виртуальную сеть:
Моя цель - настроить сервер TeamSpeak на гостевой системе, доступный по общедоступному IP-адресу хоста.
Просматривая форумы, я пришел к таким правилам:
iptables -t nat -A PREROUTING -p udp --dport 9987 -j DNAT --to 192.168.100.2:9987
iptables -I FORWARD -d 192.168.100.2 -p udp -m state --state NEW,RELATED,ESTABLISHED -m udp --dport 9987 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 30033 -j DNAT --to 192.168.100.2:30033
iptables -I FORWARD -d 192.168.100.2 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 30033 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 30033 -j DNAT --to 192.168.100.2:30033
iptables -I FORWARD -d 192.168.100.2 -p udp -m state --state NEW,RELATED,ESTABLISHED -m udp --dport 30033 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 10011 -j DNAT --to 192.168.100.2:10011
iptables -I FORWARD -d 192.168.100.2 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 10011 -j ACCEPT
К сожалению, я не получаю ответа при попытке подключиться с помощью TeamSpeak.
Не могли бы вы просветить меня?
------------------------------------ РЕДАКТИРОВАТЬ ------------- -----------------------
Запустив "tcpdump -i eth0 -n udp port 9987" на обеих машинах, я могу увидеть перенаправленные пакеты.
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
netstat -an | grep -w 9987
udp 0 0 0.0.0.0:9987 0.0.0.0:*
ЖУРНАЛ всех - где угодно и где угодно Ограничение: в среднем 10 / сек, пакет 5, предупреждение об уровне ЖУРНАЛА
Jun 21 04:17:07 sd-xxxxx kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:0c:c4:7a:08:xx:xx:xx:xx SRC=62.xx.xx.52 DST=62.xx.xx.255 LEN=49 TOS=0x00 PREC=0x00 TTL=64 ID=45280 DF PROTO=UDP SPT=47579 DPT=32414 LEN=29
Jun 21 04:17:09 sd-xxxxx kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:0c:c4:7a:09:xx:xx:xx:xx SRC=62.xx.xx.188 DST=255.255.255.255 LEN=201 TOS=0x00 PREC=0x00 TTL=64 ID=65 DF PROTO=UDP SPT=55996 DPT=1900 LEN=181
Я обнаружил, что правило для порта 9987 не описывается так же в блоке FORWARD iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
LOG all -- anywhere anywhere limit: avg 10/sec burst 5 LOG level warning
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere 192.168.100.2 state NEW,RELATED,ESTABLISHED tcp dpt:10011
ACCEPT udp -- anywhere 192.168.100.2 state NEW,RELATED,ESTABLISHED udp dpt:30033
ACCEPT tcp -- anywhere 192.168.100.2 state NEW,RELATED,ESTABLISHED tcp dpt:30033
ACCEPT udp -- anywhere 192.168.100.2 state NEW,RELATED,ESTABLISHED udp dpt:dsm-scm-target
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Нет журнала добавления правил ниже ни на хосте, ни на госте
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP