この質問が以前に要求された可能性があることを知っていますが、希望する方法でやろうとしています。いいですね。状況は次のとおりです。
仮想マシン2台
仮想マシンA- CentOS(2つのネットワークアダプタを含む):
外部NIC - ホストに接続されている(簡単にするためにそれを呼び出す)「外部A」。 DHCPの有効化
内部ネットワークカード -「内部A」。このインターフェイスでのみ受信するように構成された固定IP、DHCPDサーバー
仮想マシンB-Debian(ネットワークアダプタが1つのみ)
内部ネットワークカード -「内部B」、ネットワーク上「内部A」、DHCPを有効にし、内部AからIPを正常に受信します。
さて、これは私が欲しいものです。内部ネットワークカードへのNATアクセスを望まないため、すべての外部トラフィックを次の方法でルーティングする方法はありますか?外部AVM 1のネットワークカード?
メモ:
外部Aそして内部まったく異なるサブネットにあります。
外部A - 192.168.0.X
内部A - 192.168.135.X
答え1
「内部A」にデフォルトゲートウェイがあり、「内部B」に同じデフォルトゲートウェイがあることを確認してください。
可能であれば、natテーブルのすべてのiptablesルールを削除します。
iptables --flush -t nat
仮想マシン01
[root@centos01 ~]# route -n | grep enp0s3
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp0s3
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
VM01ネットワーク構成:
enp0s3: conectado to enp0s3
inet4 192.168.0.41/24
route4 0.0.0.0/0
route4 192.168.0.0/24
enp0s8: conectado to enp0s8
inet4 192.168.135.254/24
route4 192.168.135.0/24
route4 192.168.0.1/32
route4 0.0.0.0/0
仮想マシン02
[root@centos02 ~]# route -n | grep enp0s3
0.0.0.0 192.168.135.254 0.0.0.0 UG 100 0 0 enp0s3
192.168.135.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
VM02ネットワーク構成:
enp0s3: conectado to enp0s3
inet4 192.168.135.50/24
route4 0.0.0.0/0
route4 192.168.135.0/24
VM01転送確認:
[root@centos01 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
VM01 iptables、ルールを追加する代わりにルールを挿入してみましょう。
iptables -t nat -I PREROUTING --src 192.168.135.0/24 --dst 0/0 -j ACCEPT
iptables -t nat -I POSTROUTING -j MASQUERADE
VM01 iptablesチェック:
[root@centos01 ~]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 192.168.135.0/24 0.0.0.0/0
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
効果があるかどうか教えてください:)
答え2
私はこれがうまくいくと思います。 VM Aで実行
IP転送を有効にする(永久)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
192.168.135.xのトラフィックを許可する
iptables -t nat -A PREROUTING --src 192.168.135.0/24 --dst 0/0 -j ACCEPT
NATトラフィック
iptables -t nat -A POSTROUTING -j MASQUERADE