setup reverse tunnel with stunnel

Unlike ssh,  stunnel dosen’t support the reverse tunnel by it’s self.

With the help of tgcd ( TCP/IP Gender Changer Daemon ), we are able to setup a reverse tunnel by chain the tgcd and stunnel:

For example:

We try to access the corp server from home,  but due to the NAT firewall of the corp, only out going 80/443 port are opened:

client  ==> tgcd LL node (home server)  ==> tgcd CC node (corp agent) ==> corp server:

Home Server:

Launching tgcd daemon in LL mode:

   tgcd -L -q 2222 -p 22222

Listen on port 2222 for client access

Listen on port 22222 for tgcd CC access

 

Launching stunnel in server mode:

       /usr/local/bin/stunnel /etc/stunnel/stunnel_server.conf

Listen on port 443 for incoming ssl connection

Forward link with sni=tgcd to port 2222

cat /etc/stunnel/stunnel_server.conf

[tls]
accept = 0.0.0.0:443
connect = 127.0.0.1:1080

[tgcd]
sni = tls:tgcd
connect = 127.0.0.1:2222

 

Corp Agent Server:

Launching tgcd daemon in CC mode:

tgcd -C -s 127.0.0.1:222 -c 127.0.0.227:2222

Connect to tgcd LL node at:   127.0.0.227:2222

Connect to sshd server at:     127.0.0.1:222

Launching stunnel in client mode:

/usr/local/bin/stunnel /etc/stunnel/stunnel_client.conf

Listen on port 127.0.0.227:2222 from tgcd CC, and

Access Home server via port 443 behind NAT and http proxy

cat /etc/stunnel/stunnel_client.conf

 

[ssh-tgcd-home]
accept = 127.0.0.227:2222
protocolHost = home.serverip:443

connect = http_proxy_ip:http_proxy_port
protocol = connect
sni = tgcd

 

******************************************

With such configuration, we can login into the corp server by means of:

ssh -p 22222   home.server.ip

Config Godaddy Smtp Realy

Config 3rd (Godaddy)  SMTP server as the relay of your smtp server

 

Godaddy:

MX records:

0 smtp.secureserver.net
10 mailstore1.secureserver.net

 

Host Names (CNAME)

POP pop.secureserver.net
IMAP imap.secureserver.net
SMTP smtpout.secureserver.net

 

Port:

  • Without SSL
    • Incoming Port
      IMAP – 143
      POP – 110
    • Outgoing (SMTP) port
      One of the following: 25, 80, 3535
  • With SSL
    • Incoming Port
      IMAP – 993
      POP – 995
    • Outgoing (SMTP) port
      465

 

 

Install Postfix

sudo apt-get install mailutils
sudo apt-get install postfix

Config Postfix

sudo nano /etc/postfix/main.cf

Test Postfix SMTP Server Can Send Email

echo "This is the body of the email" | 
mail -s "This is the subject line" xxx@gmail.com

Forward System Mail via the Postfix SMTP Server

cat /etc/aliases

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root:  account@yourdomain

Send  Mail via external (Godaddy) smtp server

Configuring  Usernames and Passwords

sudo nano    /etc/postfix/sasl/passwd
[smtpout.secureserver.net]:80 account@yourdomain:passwd
sudo postmap /etc/postfix/sasl/passwd

Configuring Relay

sudo nano    /etc/postfix/main.cf

# specify SMTP relay host 
relayhost = [smtpout.secureserver.net]:80

At the end of the file, add the following parameters to enable authentication:

cat /etc/postfix/main.cf

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd

Test Postfix SMTP Relay

echo "email via godaddy smtp" | 
mail -s "smtp relay" "From: account@yourdomain" xxx@dest

Config email  alias From header in Postfix

 Add the line into /etc/postfix/main.cf

smtp_generic_maps = hash:/etc/postfix/generic

cat /etc/postfix/generic

other-email  account@yourdomain

sudo postmap /etc/postfix/generic

ESXi6 kernel log (dmesg)

Understanding SCSI device/target NMP errors/conditions in ESX/ESXi 4.x and ESXi 5.x/6.0 (1030381)

2016-10-27T12:50:47.496Z cpu7:32798)ScsiDeviceIO: 2651: Cmd(0x439d80358400) 0x1a, CmdSN 0x1d1f2 from world 0 to dev “mpx.vmhba33:C0:T0:L0” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.

Host Status = 0x0 = OK
Device Status = 0x2 = Check Condition
Plugin Status = 0x0 = OK

Sense Key = 0x5 = ILLEGAL REQUEST
Additional Sense Code/ASC Qualifier = 0x24/0x0 =INVALID FIELD IN CDB
For a complete list of possible Sense Keys, see SCSI Sense Keys
For a complete list of Additional Sense Code/ASC Qualifier pairings, see ASC-NUM.TXT

ESXi disk (LUN) property check

Identifying disks when working with VMware ESXi/ESX (1014953)

 

Run these commands to collect disk and LUN information from ESXi 6:

  • Run the esxcli storage core path list command to generate a list of all LUN paths currently connected to the ESXi host.
  • Run the esxcli storage core device list command to generate a list of LUNs currently connected to the ESXi host.
  • Run the esxcli storage vmfs extent list command to generate a list of extents for each volume and mapping from device name to UUID.
  • Run the esxcli storage filesystem list command to generate a compact list of the LUNs currently connected to the ESXi host, including VMFS version.
  • Run the ls -alh /vmfs/devices/disks command to list the possible targets for certain storage operations.

 

 

 

http://pubs.vmware.com/vsphere-60/topic/com.vmware.ICbase/PDF/vsphere-esxi-vcenter-server-601-storage-guide.pdf

http://pubs.vmware.com/vsphere-60/topic/com.vmware.ICbase/PDF/vsphere-esxi-vcenter-server-602-host-management-guide.pdf

 

How ESXi identify disk

Identifying disks when working with VMware ESXi/ESX (1014953)

 

These are the definitions for some of identifiers and their conventions:
  • naa.<NAA>:<Partition> or eui.<EUI>:<Partition>

    NAA stands for Network Addressing Authority identifier. EUI stands for Extended Unique Identifier. The number is guaranteed to be unique to that LUN. The NAA or EUI identifier is the preferred method of identifying LUNs and the number is generated by the storage device. Since the NAA or EUI is unique to the LUN, if the LUN is presented the same way across all ESXi hosts, the NAA or EUI identifier remains the same. For more information on these standards, see the SPC-3 documentation from the InterNational Committee for Information Technology Standards (T10).

    The <Partition> represents the partition number on the LUN or Disk. If the <Partition> is specified as 0, it identifies the entire disk instead of only one partition. This identifier is generally used for operations with utilities such as vmkfstools.

 

mpx.vmhba<Adapter>:C<Channel>:T<Target>:L<LUN> or mpx.vmhba<Adapter>:C<Channel>:T<Target>:L<LUN>:<Partition>

Some devices do not provide the NAA number described above. In these circumstances, an MPX Identifier is generated by ESXi to represent the LUN or disk. The identifier takes the form similar to that of the canonical name of previous versions of ESXi with the mpx. prefix. This identifier can be used in the exact same way as the NAA Identifier described above.

Local Storage as RDM

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1017530

/vmfs/devices/disks           for local or SAN-based disks.

/vmfs/devices/lvm               for ESXi logical volumes.

/vmfs/devices/generic        for generic SCSI devices.

To configure a local device as an RDM disk:
  1. Open an SSH session to the ESXi/ESX host.
  2. Run this command to list the disks that are attached to the ESXi host:# ls -l /vmfs/devices/disks
  3. From the list, identify the local device you want to configure as an RDM and copy the device name.Note: The device name is likely be prefixed with t10. and look similar to:

    t10.F405E46494C4540046F455B64787D285941707D203F45765
  4. To configure the device as an RDM and output the RDM pointer file to your chosen destination, run this command:# vmkfstools -z /vmfs/devices/disks/diskname /vmfs/volumes/datastorename/vmfolder/vmname.vmdkFor example:

    # vmkfstools -z /vmfs/devices/disks/t10.F405E46494C4540046F455B64787D285941707D203F45765 /vmfs/volumes/Datastore2/localrdm1/localrdm1.vmdk

    Note: The size of the newly created RDM pointer file appears to be the same size and the Raw Device it it mapped to, this is a dummy file and is not consuming any storage space.

  5. When you have created the RDM pointer file, attach the RDM to a virtual machine using the vSphere Client:
    1. Right click the virtual machine you want to add an RDM disk to.
    2. Click Edit Settings.
    3. Click Add.
    4. Select Hard Disk.
    5. Select Use an existing virtual disk.
    6. Browse to the directory you saved the RDM pointer to in step 5 and select the RDM pointer file and click Next.
    7. Select the virtual SCSI controller you want to attach the disk to and click Next.
    8. Click Finish.
  6. You should now see your new hard disk in the virtual machine inventory as Mapped Raw LUN.