web-dev-qa-db-ja.com

2つのインターフェース間でトラフィックを転送する

2つのインターフェイスを備えた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を持つ1つのデバイス(BDと名付けます)に接続されています
  • Tun0は私たちのVPNネットワークです

2つの質問があります:)

  1. ローカルネットワーク(ブラウザ192.168.45.101:8080をタップする)またはVPNネットワーク(ブラウザ172.17をタップする)にあるマシンからBDのWebサーバー(192.168.1.5:80)にアクセスするにはどうすればよいですか? .1.230:8080)?私は本当にネットワーク構成の初心者です:Pなので、このことから、トラフィックをポート8080からポート80にルーティングする必要があることがわかります。
  2. bDマシンにはもう1つの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

そしてこれが私が2番目の質問のために試したものです(同じことは..うまくいきませんでした):

~# 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

私はそれがあなたのために働くことを願っています:)

1
Bilal