Iptables

在兩個介面之間轉發流量

  • October 18, 2018

我有一個帶有兩個介面的 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 連接到一個具有靜態 IP 192.168.1.5 的設備(讓它命名為 BD)
  • Tun0 是我們的 VPN 網路

我有兩個問題:)

  1. 如何從本地網路(通過點擊瀏覽器 192.168.45.101:8080)或 VPN 網路(通過點擊瀏覽器 172.17)上的機器訪問 BD (192.168.1.5:80) 的 Web 伺服器.1.230:8080)?我真的是網路配置的大初學者:P 所以我明白我應該將流量從埠 8080 路由到埠 80
  2. 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 天時間,我有截止日期)

謝謝

將流量從一台伺服器重定向到另一台伺服器是有前提的:

#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

我希望它對你有用:)

引用自:https://serverfault.com/questions/935989