= ネットワーク設定メモ = 最近のLinuxは、Network Managerなどで自動的に無線LANを探してくれたりして便利になっているのはよいが、特殊な環境だと毎回設定する必要があったり、正直うざいときがある。そこで、手動で設定してみよう。 = 設定 = /etc/network/interfacesファイルに次のように設定を行う。 {{{ auto eth1 iface eth1 inet static wireless-essid [SSID] wireless-key [WEPキー] wireless-mode ad-hoc (アクセスポイントを利用する場合はmanagedに) address 192.168.2.11 netmask 255.255.255.0 gateway 192.168.2.1 }}} これで、 {{{ # ifup eth1 }}} で無線LANが接続できる。無線LANのインタフェースかどうかは、iwconfigで確認できる。 = 特定のTCPポートを利用しているプロセスを発見する = Windowsの場合、 {{{ $ netstat -oan }}} Linuxの場合 {{{ $ netstat -tanp }}} = オーバレイネットワーク = ネットワークの上にネットワークを作るオーバレイネットワークの作り方です。 ホスト1(192.168.200.1)とホスト2(192.168.200.2)がインタフェースeno1で繋がっている例です。 == VXLAN {{{ [192.168.200.1]# ip link add vxlan0 type vxlan id 2 remote 192.168.200.2 local 192.168.200.1 dev eno1 dstport 4789 [192.168.200.2]# ip link add vxlan0 type vxlan id 2 remote 192.168.200.1 local 192.168.200.2 dev eno1 dstport 4789 }}} == GRE {{{ [192.168.200.1]# ip tunnel add gre0 mode gre remote 192.168.200.2 local 192.168.200.1 dev eno1 [192.168.200.2]# ip tunnel add gre0 mode gre remote 192.168.200.1 local 192.168.200.2 dev eno1 }}} == VLAN {{{ [192.168.200.1]# ip link add link eno1 name eno1.2 type vlan id 2 [192.168.200.2]# ip link add link eno1 name eno1.2 type vlan id 2 }}} 動作確認は、次のような感じで実行。 {{{ [192.168.200.1]# ip addr add 192.168.128.1/24 broadcast 192.168.128.255 dev vxlan0 id 200 [192.168.200.1]# ip link set dev vxlan0 up [192.168.200.2]# ip addr add 192.168.128.2/24 broadcast 192.168.128.255 dev vxlan0 id 200 [192.168.200.2]# ip link set dev vxlan0 up [192.168.200.2]# ping 192.168.128.1 }}} ただし、上記の設定では、**RHEL7.1/CentOS7.1ではパケットのフラグメントが発生し、著しい性能低下が発生**する。原因は、カプセル化されたIPヘッダの中にチェックサムが空のため、受け側のNICでGROが効かず細切れになったパケットが直接アプリケーション側まで届くためである。udpcsumオプションを付けると、送信パケットのすべてのヘッダにチェックサムが入るようになり、受信側のNICでGROされるため性能が劇的に向上する。ただし、最新のiprouteを利用する必要がある(RHEL7.1同梱のiprouteではudpcsumに対応していないので注意。CentOS7/RHEL7用の最新パッケージはここ: https://github.com/okamototk/el-repo )。 {{{ # ip addr add 192.168.128.1/24 broadcast 192.168.128.255 dev vxlan0 id 200 udpcsum }}} Open vSwitchを利用する場合は、options:csum=trueを利用する。Open vSwitchのcsumオプションは、CentOS7.2以降で利用できる。 {{{ # ovs-vsctl add-port vxlanbr vxlan0 -- set interface vxlan0 type=vxlan options:key=128 options:remote_ip=192.168.100.2 options:csum=true }}} == Open vSwitch openvswitchパッケージをインストールする。CentOSでは、openvswitchのパッケージはないので、RDOのパッケージ * https://repos.fedorapeople.org/repos/openstack/ を利用する。 {{{ # rpm -Uvh https://repos.fedorapeople.org/repos/openstack/openstack-kilo/rdo-release-kilo-1.noarch.rpm # yum install openvswitch # systemctl enable openvswitch # systemctl start openvswitch }}} ホスト1(IP192.168.100.1),2(192.168.100.2)で次のように実行。greのremote_ipには対抗ノードのIPを設定する。 ### ホスト1(192.168.100.1) {{{ # ovs-vsctl add-br brgre # ovs-vsctl add-port brgre gre -- set interface gre type=gre options:remote_ip=192.168.100.2 # ip link set brgre up # ip addr add 192.168.200.1/24 dev brgre }}} === ホスト2 (192.168.100.2) {{{ # ovs-vsctl add-br brgre # ovs-vsctl add-port brgre gre -- set interface gre type=gre options:remote_ip=192.168.100.1 # ip link set brgre up # ip addr add 192.168.200.2/24 dev brgre }}} pingで192.168.200.xを利用して疎通が確認できる。firewalldが動作していると、firewalldにブロックされて通信できないことがある。その場合、firewalldサービスを停止するか、次のようにして、greをfirewalldで許可する。 {{{ # firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT # firewall-cmd --direct --add-rule ipv6 filter INPUT 0 -p gre -j ACCEPT # firewall-cmd --reload }}} === TNI Tenant Network Identifierを割り振って仮想ネットワークを作成する場合は、keyオプションを利用する.例えば、TNIを1100に設定した仮想ネットワークを作成するには、次のようにする。 {{{ # ovs-vsctl add-port brgre gre -- set interface gre type=gre options:remote_ip=192.168.100.2 options:key=1100 }}} === ブリッジの利用 ip tunnelを利用すると、トンネルのインタフェースを直接作成する例だが、ブリッジを利用する場合は、次のようにtapを作成する. {{{ # ip link add gre-tun type gretap remote 192.168.100.2 key 100 # brctl addbr br-gre # brctl addif br-gre gre-tun }}}