我有一个带有两个接口的Linux机器:
~#ip -4 addr show scope global
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
inet 192.168.45.101/24 brd 192.168.45.255 scope global eth0
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
inet 172.17.1.230 peer 172.17.1.229/32 scope global tun0
10: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
- Eth0 连接到我们的本地网络(其他设备可以在这个网络上找到)
- Eth1 连接到一个设备(我们将其命名为 BD),该设备具有静态 IP 192.168.1.5
- Tun0 是我们的 VPN 网络
我有两个问题:)
- 我如何从本地网络上的机器(通过点击浏览器 192.168.45.101:8080)或 VPN 网络上的机器(通过点击浏览器 172.17.1.230:8080)访问 BD 的 Web 服务器(192.168.1.5:80)?我真的是网络配置方面的新手 :P,所以我从中了解到我应该将流量从端口 8080 路由到端口 80
- BD 机器有另一个 TCP 端口 5017,用于发送和接收一些数据。我如何从连接到本地网络或 VPN 网络的机器监听此端口?
以下是我对第一个问题的尝试(当然没有奏效):
~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.5:80
~# iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.5:80
~#iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
~#iptables -A FORWARD -i tun0 -p tcp --dport 80 -j ACCEPT
以下是我对第二个问题的尝试(同样的事情..没有起作用):
~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5017-j DNAT --to-destination 192.168.1.5:5017
~# iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 5017-j DNAT --to-destination 192.168.1.5:5017
~#iptables -A FORWARD -i eth0 -p tcp --dport 5017 -j ACCEPT
~#iptables -A FORWARD -i tun0 -p tcp --dport 5017 -j ACCEPT
有人可以帮忙吗?...(我花了 3 天时间解决这个问题,而且我有一个最后期限)
谢谢
答案1
将流量从一台服务器重定向到另一台服务器的步骤如下:
#enable IP forwarding:
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
#then activate the changes
sudo sysctl -p
#Start iptables
sudo systemctl start iptables
#Check iptables rules:
(check that you don't have a deny policy )
#You can flush all rule to start in a clean env:
sudo iptables -F
#+For the nat
sudo iptables -t nat -F
#Add rules
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.5:80
#To check :
sudo iptables -t nat -L -n
#Save the iptables rule :
sudo iptables-save | sudo tee /etc/iptables.up.rules
我希望它对你有用:)