![特定のポート経由で OpenVPN を許可する - CentOS 6.5](https://rvso.com/image/623647/%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E7%B5%8C%E7%94%B1%E3%81%A7%20OpenVPN%20%E3%82%92%E8%A8%B1%E5%8F%AF%E3%81%99%E3%82%8B%20-%20CentOS%206.5.png)
私は VPS (CentOS 6.5) を所有しています。このサーバーに OpenVPN をインストールしました。すべて正常に動作し、接続やサーフィンなどが可能です。サーバーの IP が であるとします。VPS1.2.3.4
に接続すると、私の IP は になります1.2.3.4
。
また、ポート 8069 で実行されている OpenERP (同じ VPS 上) もインストールしました。
私が実現しようとしているのは、VPN トラフィックを除くポート 8069 上のすべてのトラフィックをブロックすることです。そのため、アクセスするには OpenVPN を使用して VPS に接続する必要がありますhttp://1.2.3.4:8069
。
ネット上でいくつかの iptables チュートリアルを試しましたが、どれも機能しません。
例えば:
iptables -A INPUT -p tcp -s 1.2.3.4 --dport 8069 -j ACCEPT
or
iptables -A INPUT -p tcp -s 10.8.0.0/24 --dport 8069 -j ACCEPT
or
iptables -I INPUT \! --src 10.8.0.0/24 -m tcp -p tcp --dport 8069 -j DROP
or
iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 8069 -j DROP
これらは例です。私はさらに多くのルールを試しました。私が従ったすべてのチュートリアルはポート 8069 のすべてのトラフィックをブロックし、OpenVPN を使用して VPS に接続してもアクセスできませんhttp://1.2.3.4:8069
。
VPN 接続を除くポート 8069 のすべてのトラフィックをブロックする方法を知っている人はいますか? これを実現するにはどうすればいいですか?
私の server.conf は次のとおりです:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
user nobody
group nobody
keepalive 5 30
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
verb 5
私のクライアント設定は次のとおりです:
dev tun
client
proto udp
remote 1.2.3.4
port 1194
resolv-retry infinite
nobind
redirect-gateway def1
persist-key
persist-tun
ca ca.crt
cert nika-pc.crt
key nika-pc.key
cipher AES-256-CBC
comp-lzo
ns-cert-type server
verb 5
前もって感謝します。
編集:
出力: iptables -L -n -v
出力: iptables -L -n -v | head
答え1
なんとも複雑なファイアウォール設定ですね(ひどい多くのルールではパケット数がゼロなので、そこには多くの過去のゴミがあるように思います。既存のどのルールがこのトラフィックを誤ってキャッチしているのかを突き止めようと精査するよりも、関連するルールだけを先頭に配置することをお勧めします。
iptables -I INPUT 1 -p tcp -i tun+ --dport 8069 -j ACCEPT
iptables -I INPUT 2 -p tcp --dport 8069 -j REJECT
編集: 質問に更新情報を編集することを強くお勧めします。pastebin のリンクを延々と残すのではなく、時間が経ってもそのまま残るかどうかわからないままにしておくのはやめてください。いずれにせよ、新しい出力をありがとうございます。ご覧のとおり、最初のルールのパケット数はゼロですが、2 番目のルール (全面拒否) のパケット数はゼロではありません。残る唯一の結論は、このトラフィックが OpenVPN 接続を使用しているという誤解です。これは明らかにプレーンテキストのインターネット経由で来ています。完全に確かに、上記の2つのルールの間に3番目のルールを追加して、
iptables -I INPUT 2 -p tcp --dport 8069 -j LOG --log-prefix "CARROT: "
ログファイルにその単語CARROT
が頻繁に出現しない限り、システムログ ( /var/log/messages
、またはsyslog
ディストリビューションが適切と判断する ) でそれらの一致からの出力を簡単に見つけることができ、拒否されたパケットがどのインターフェースから入ってくるかを確認できるはずです。 であることはないと思いますtun0
。
答え2
コメントを追加できないので回答を追加します。使用されているプロトコルはtcpではなくudpだと思いますので
iptables -I INPUT 1 -p udp -i tun+ --dport 8069 -j ACCEPT
iptables -I INPUT 2 -p udp --dport 8069 -j REJECT