router

CentOS7でルーターを作ってみる
正直、専用OSで作ったほうがはるかに簡単なのだが、目的次第では必要なので用意してみた

2つ目のnicを刺してipを付与

ここでは下記のようにするため 2枚目nicには 192.168.1.1 を割り当てる
2018y01m10d_143609090.png

割り当ては、単純にnmtuiを用いた
2018y01m13d_123743568.png

ipコマンドの結果は下記になる

[root@e ~]# ip route
default via 192.168.0.1 dev enp3s0 proto static metric 100
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.6 metric 100
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.1 metric 100
[root@e ~]#

firewalldでNATP

CentOS6に於いてiptablesを駆使してNATPやらポートフォワードやらの定義スクリプトが使えない...
CentOS7ではfirewalldでNATPらを定義するみたい。このfirewalldだが、用途別のネットワークゾーンが
予め用意されている。2つのNICを適切なゾーンに割り当てれば、それでNATPが完成するみたい。
firewalldで提供されているゾーンは9種
ここでは外側に曝された1枚目nicを「external」、内部となる2枚目nicを「trusted」にします
2018y01m10d_150348585.png

現在の各nicの所属は

[root@e ~]# firewall-cmd --get-active-zone
public
  interfaces: enp3s0 enp4s0
[root@e ~]#

と「public」ゾーンに所属している。「enp3s0」を「external」へ。「enp4s0」を「trusted」へそれぞれ移す

[root@e ~]# nmcli connection modify enp3s0 connection.zone external
[root@e ~]# nmcli connection modify enp4s0 connection.zone trusted
[root@e ~]# firewall-cmd --reload
[root@e ~]# firewall-cmd --get-active-zone
external
  interfaces: enp3s0       <--- 「192.168.0.6」
trusted
  interfaces: enp4s0       <--- 「192.168.1.1」
[root@e ~]#

外側に曝されたnicを「external」にすると「masquerade」が有効になり、natpが利用可能になる

[root@e ~]# firewall-cmd --list-all --zone=external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp3s0
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
 
[root@e ~]#

各ゾーンの定義を理解すれば簡単なのかも

nfsを192.168.0.0/24側へ提供するには

[root@e ~]# firewall-cmd --add-service=nfs --zone=external --permanent
[root@e ~]# firewall-cmd --add-service=mountd --zone=external --permanent
[root@e ~]# firewall-cmd --add-service=rpc-bind --zone=external --permanent
[root@e ~]# firewall-cmd --reload
[root@e ~]# firewall-cmd --list-services --zone=external --permanent
ssh nfs mountd rpc-bind
[root@e ~]# firewall-cmd --list-all --zone=external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp3s0
  sources:
  services: ssh nfs mountd rpc-bind
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
 
[root@e ~]#

smb共有についても同様で

[root@e ~]# firewall-cmd --add-service=samba --zone=external --permanent
[root@e ~]# firewall-cmd --reload

とする

ルーターの内部nic側にbridgeを設けて仮想マシンを立てる

ルーター内に仮想マシンを立てて「内部lan(trusted)」の機能を充実させようと思った

2018y01m10d_184109851.png

2枚目nicをbridgeに加えておけば大丈夫みたい
2018y01m13d_124105954.png

このときのip routeは下記のようになる

[root@e ~]# ip route
default via 192.168.0.1 dev enp3s0 proto static metric 100
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.6 metric 100
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1 metric 425
[root@e ~]#

そして、NATPにするには nmcli コマンドを用いて br0 を「trusted」に移すして下記の様にする

[root@e ~]# firewall-cmd --get-active-zone
external
  interfaces: enp3s0
trusted
  interfaces: enp4s0 br0
[root@e ~]#

仮想マシンの作成はlibvirt/仮想マシン作成に倣うが下記コマンドで実施

virt-install --connect qemu:///system  --virt-type kvm  --machine=pc  \
--name ad  --ram 1024  --cpu host  --vcpus=1  --description "テストAD"  --os-type linux  \
--os-variant rhel7  --boot cdrom,hd,menu=on  \
--disk path=/opt/kvm/HDD.qcow2.img,format=qcow2,bus=virtio,cache=writeback  \
--cdrom /export/CentOS-7-x86_64-DVD-1611.iso  --network bridge=br0,model=virtio  \
--graphics vnc,port=5900,listen=0.0.0.0,keymap=ja

すると、仮想的なnic(vnet0)が発生するが、これはbr0に所属のため「192.168.1.0/24」に属する
また「firewall-cmd --get-active-zone」コマンドには表示されない

[root@e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.d05099c2a0ec       yes             enp4s0
                                                        vnet0
[root@e ~]# ip addr show master br0
7: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN qlen 1000
    link/ether d0:50:99:c2:a0:ec brd ff:ff:ff:ff:ff:ff
11: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000
    link/ether fe:54:00:a8:8c:d1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fea8:8cd1/64 scope link
       valid_lft forever preferred_lft forever
[root@e ~]# firewall-cmd --get-active-zone
external
  interfaces: enp3s0
trusted
  interfaces: enp4s0 br0
[root@e ~]#

ルーターマシンから内部nic側マシンにsshログインできない

恐らく内部マシンで接続要求があったマシンの名前解決(DNS)が出来ていないからかと

[root@localhost ~]# vi /etc/ssh/sshd_config
 :
UseDNS no
 :
[root@localhost ~]# systemctl restart sshd

で回避されるかと


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-03-21 (水) 11:37:58 (212d)