我在我的debian机器上使用了以下iptables脚本:
#!/bin/sh
IPT="/sbin/iptables"
# Flush old rules, old custom tables
$IPT --flush
$IPT --delete-chain
# Set default policies for all three default chains
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# Enable free use of loopback interfaces
$IPT -A INPUT -i lo -j ACCEPT
# All TCP sessions should begin with SYN
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -s 0.0.0.0/0 -j DROP
# Accept inbound TCP packets
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
# Accept inbound ICMP messages
$IPT -A INPUT -p ICMP --icmp-type 8 -s 0.0.0.0/0 -j ACCEPT
#VM Windows
$IPT -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
$IPT -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
$IPT -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
$IPT -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
$IPT -A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
$IPT -A FORWARD -i virbr0 -o virbr0 -j ACCEPT
$IPT -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
$IPT -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
$IPT -I FORWARD -o virbr0 -d 192.168.122.178 -j ACCEPT
$IPT -I FORWARD -o virbr0 -d 192.168.122.160 -j ACCEPT
$IPT -I FORWARD -o virbr0 -d 192.168.122.105 -j ACCEPT
$IPT -t nat -I PREROUTING -p tcp --dport 25300 -j DNAT --to 192.168.122.178:25300
$IPT -t nat -I PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.122.160:22
$IPT -t nat -I PREROUTING -p tcp --dport 26300 -j DNAT --to 192.168.122.105:26300
$IPT -t nat -A POSTROUTING -o virbr0 -j MASQUERADE
$IPT -A FORWARD -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i virbr0 -o eth0 -j ACCEPT
$IPT -A FORWARD -i virbr0 -o lo -j ACCEPT我有3台虚拟机,用kvm虚拟化。不知怎么的,我成功地完成了我的iptables脚本。每次我试图连接到端口80/443上的任何东西时,流量都会被重定向到本地机器。我必须知道这一点,因为其中一个VM是Windows,此时我运行了IIS。我试图访问的每个网站都重定向到本地运行的IIS。奇怪的是,它似乎只是重定向80/443端口上的传出流量。
发布于 2018-02-01 17:54:53
编辑:如果您使用的是libvirt,您应该首先使用这些管理机制,而不是这个答案。
你应该尝试几件事来使你的NAT规则更受限制。
我的第一个猜测是,您的POSTROUTING规则只应该是您的内部地址。
$IPT -t nat -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -o virbr0 -j MASQUERADE此外,您还应该进一步限制您的预出规则,以避免反弹您的内部流量,例如。
$IPT -t nat -I PREROUTING ! -s 192.168.122.0/24 -i virbr0 -p tcp --dport 25300 -j DNAT --to 192.168.122.178:25300https://serverfault.com/questions/895220
复制相似问题