端口转发到 vboxnet0 并保存客户端的真实 IP

端口转发到 vboxnet0 并保存客户端的真实 IP

我在通过 VirtualBox 运行的虚拟机上设置了互联网,并设置了端口转发。首先,在主机 (iproutes2) 的 rt_tables 中,我添加了以下内容:

100 vm0

然后我运行这个:

ip rule add from 192.168.56.100 table vm0
ip route add default dev eth0 via 10.0.1.1 table vm0

192.168.56.100 是虚拟机的本地 IP 地址。10.0.1.1 是我的网关。此外,192.168.56.1 是“仅主机”适配器中主机的本地 IP 地址。

然后在主机上进行 iptables 设置

iptables -t filter -I FORWARD --in-interface vboxnet0 --out-interface eth0 --source 192.168.56.100 -j ACCEPT
iptables -t filter -I FORWARD --in-interface eth0 --out-interface vboxnet0 --destination 192.168.56.100 -j ACCEPT

iptables -t nat -A POSTROUTING -o vboxnet0 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i vboxnet0 -j ACCEPT
iptables -A FORWARD -i eth0 -o vboxnet0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 15:1722 -j DNAT --to-destination 192.168.56.100
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1724:65530 -j DNAT --to-destination 192.168.56.100
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 15:1722 -j DNAT --to-destination 192.168.56.100
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1724:65530 -j DNAT --to-destination 192.168.56.100

抱歉。也许这里的一些 iptables 规则是多余的。

VM 通过“仅主机”适配器连接到互联网,并可以接受转发端口上的所有连接。问题是主机没有告诉 VM 客户端的真实 IP 地址。VM 收到 192.168.56.1,而不是客户端的真实 IP。示例:

root@vm:~# lsof -i :22 -n
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       691 root    3u  IPv4   21232      0t0  TCP *:22 (LISTEN)
sshd       691 root    4u  IPv6   21234      0t0  TCP *:22 (LISTEN)
sshd    996826 root    4u  IPv4 2857061      0t0  TCP 192.168.56.100:22->192.168.56.1:61441 (ESTABLISHED)

相关内容