シナリオ:
Client-1 <===TUN0===> SERVER <===ETH0===> Client-2
質問:
Eth0インターフェースのポート5000に着信する着信接続要求をClient-1のtun0インターフェースの5000ポートに転送するようにOpenVPNを構成して、Client-1のアプリがUDPとTCPの両方でクライアント-2にコンテンツを提供できるようにするにはどうすればよいですか?
幸いなことに、私はこれで答えを見つけました ServerFaultの質問 。
私がこれから取ったいくつかの構成 DigitalOceanチュートリアル 。
sysctl
でポート転送を有効にしても、/etc/ufw/before.rules
にiptables
ルールを追加する必要がありました。次のようになります。
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100
-A PREROUTING -i eth0 -p udp -m udp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
.
.
.
.
.
# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT
# START OPENVPN RULES
-A FORWARD -d [Client-1's vpn address]/32 -p tcp -m tcp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d [Client-1's vpn address]/32 -p udp -m udp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# END OPENVPN RULES
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
sysctl
ポート転送を有効にし、IP固有のポート転送iptables
ルールを使用すると、50100ポートが開いて、クライアント1のポートに転送されます。